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

时间:2014-01-04 18:06:11

标签: sql sqlite indexing sql-optimization database-optimization

在SQL中,当查询按多个条件进行过滤时,简单优化是在限制较少的条件之前列出更多限制条件,因为条件是按照倒数第一顺序进行评估的。

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

问题:在SQLite中,如果索引了某个特定列,SQLite是否会首先评估索引列上的条件,即使它是在其他条件之后列出的?例如,如果col3被索引但其他列没有被索引,那么SQLite会首先将第三个条件作为优化进行评估,还是始终按照查询中条件出现的顺序进行评估?

1 个答案:

答案 0 :(得分:1)

SQLite忽略查询中条件的顺序,并始终按照它估计最有效的顺序对它们进行评估。

阅读文档:
ANALYZE
EXPLAIN QUERY PLAN
Query Planning
Optimizer Overview