【问题标题】:sqlite lookup by rowid perf通过 rowid perf 查找 sqlite
【发布时间】:2015-03-04 07:25:54
【问题描述】:

我兴致勃勃地把“查询计划”链接https://www.sqlite.org/queryplanner.html红了。

我还是 sqlite3 的初学者,我想问一个关于“lookup by rowid”技术性能的问题。

文档说对 rowid 进行了 bsearch,在我的例子中,我使用 PK 作为 rowid。

我使用具有稀疏 PK 值的表,一旦构建了这些表,它们就不再更改,不再插入/删除。我不知道是否有任何 API 可以“关闭”一个表,即使其不再可修改。

然后我需要在某些列的表格上构建一些索引。该文档说,在索引中搜索时,我们在 INDEX 上进行主 bsearch,然后我们得到一个 rowid,然后我们在 ROWID 索引上进行辅助 bsearch 以找到该行。

由于在构建索引时 tabke 是“关闭”的,因此优化器可以不存储 rowid 而是存储 row_index 以避免辅助 bsearch。

========================================
沿着这条线,如果不使用 PK,让 rowid 在我的表构造期间 1 比 1 增长,从它关闭并在其上创建 INDEX 时,在 INDEX bsearch 匹配上找到的 rowid 是否用作表中的索引避免二次搜索,如果可以的话,我可以用这种方式组织我的表格。

提前感谢任何建议 干杯, 披

【问题讨论】:

    标签: sqlite database-performance


    【解决方案1】:

    没有 row_index 这样的东西。

    为避免表查找,请将查询读取的所有列放入索引中,以便您拥有covering index。 或者,使用WITHOUT ROWID 表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-22
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      相关资源
      最近更新 更多