代码之家  ›  专栏  ›  技术社区  ›  David Liu

优化获取sqlite中按第一个字母分组的行数?

  •  1
  • David Liu  · 技术社区  · 14 年前

    我当前的查询如下所示:

    SELECT SUBSTR(name,1,1), COUNT(*) FROM files GROUP BY SUBSTR(name,1,1)

    但是,对一个已经被 name 列。我从这里看到的 question 某些引擎可能无法正确地使用SUBSTR函数的索引,事实上, sqlite will not use indexes for SUBSTR(string,1,1) .

    有没有其他方法可以利用索引和NET ME更快的查询?

    2 回复  |  直到 14 年前
        1
  •  1
  •   falconcreek    14 年前

    与访问模式一致的一个策略是向表中添加一个新的索引列“第一个字母”。使用上的触发器设置插入和更新时的值。然后您的查询是一个简单的按字母分组的查询。

        2
  •  0
  •   TTT    14 年前

    另一种策略是创建一个包含主表聚合的影子表。这并不容易,因为作为开发人员,您的工作是使影子表与母表保持一致。表中的每个删除、更新或插入 文件夹 需要在阴影表中进行更改。

    像Oracle这样的数据库支持物化视图来自动实现这一点,但sqlite不支持。