假设我想查询一个基于多个WHERE子句的表。
这两条语句中的任何一条会比另一条更快吗?
SELECT *
FROM table
WHERE (line_type='section_intro' OR line_type='question')
AND (line_order BETWEEN 0 AND 12)
ORDER BY line_order";...or:
SELECT *
FROM table
WHERE (line_order BETWEEN 0 AND 12)
AND (line_type='section_intro' OR line_type='question')
ORDER BY line_order;我猜这将归结为第一个记录是否会选择12个以上的记录,然后从那里削减。
发布于 2009-10-07 22:37:57
不,顺序并不重要。查询优化器将分别评估所有条件,并根据适用的索引/目标选择的大小等决定最佳顺序。
发布于 2009-10-07 22:54:45
这取决于您的索引。如果您在(line_type,line_order)上使用多索引,则第一个查询会更快。如果你有一个索引(line_order,line_type),第二个更快。这是因为对于多列主键,MySQL只能按顺序进行比较。否则,就没有区别了。
HTH -
克里斯
https://stackoverflow.com/questions/1534603
复制相似问题