在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是会首先计算第三个条件,还是会按照条件在编写查询时出现的顺序进行计算?
1条答案
按热度按时间2hh7jdfx1#
SQLite忽略查询中条件的顺序,并始终以它估计为最有效的顺序对它们求值。
阅读文档:
ANALYZE
EXPLAIN QUERY PLAN
Query Planning
Optimizer Overview