在SQL/sqlite3中,每个查询将使用多少个索引



我发现我的查询运行速度非常慢,当两个表在内部连接在一起时,数据规模很大,而对于小数据集,这很好。有人告诉我,sqlite3只能对查询中的每个表使用一个索引,但我不确定,有人知道在哪里可以找到信息吗?非常感谢!

关于sqlite如何使用索引的许多信息可以在以下文档URL中找到:

  • https://www.sqlite.org/queryplanner.html
  • https://www.sqlite.org/optoverview.html
  • https://www.sqlite.org/queryplanner-ng.html

基本上,每次在查询中使用表时,通常最多可以使用该表的一个索引(一个显著的例外是WHEREON中的OR条件可能允许多个索引,每个项一个(。查询计划器试图选择最合适、最快的查询。在已填充的数据库上运行ANALYZE会生成统计信息,当存在多个可能的索引时,这些统计信息可用于改进选择。

了解EXPLAIN QUERY PLAN报告对于了解特定查询最终是如何解析的以及如何以及涉及哪些索引至关重要。

最新更新