sqlite 具有索引列的查询中条件的执行顺序是什么?

xxslljrj  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(201)

在SQL中,当按多个条件筛选查询时,一种简单的优化方法是先列出限制较多的条件,然后再列出限制较少的条件,因为这些条件是按从前到后的顺序进行计算的。

SELECT _id, col1, col2, col3 
FROM table 
WHERE 
    col1 = "most_resctrictive_condition" AND 
    col2 = "less_resctrictive_condition" AND
    col3 = "least_resctrictive_condition"

如果对特定列进行了索引,那么SQLite是否会首先对索引列上的条件求值,即使它列在其他条件之后也是如此?
例如,如果对col3进行了索引,但其他列没有索引,则SQLite是会首先计算第三个条件,还是会按照条件在编写查询时出现的顺序进行计算?

2hh7jdfx

2hh7jdfx1#

SQLite忽略查询中条件的顺序,并始终以它估计为最有效的顺序对它们求值。
阅读文档:
ANALYZE
EXPLAIN QUERY PLAN
Query Planning
Optimizer Overview

相关问题