这两个SELECT子句之间是否有任何区别
(1)SELECT * from DB where key1="XXX" and key2="yyy"
and
(2)SELECT * from DB where key2="yyy" and key1="XXX"
我为两个键创建了索引,key1是主键
另外,我可以强制MySQL引擎使用index2(对于key2)而不是index1 ??
答案 0 :(得分:0)
不,任何体面的数据库查询优化器都会确保按照它认为最合适的顺序执行where子句。如果可能导致更好的执行计划,它还会尝试简化或以其他方式重写布尔表达式。
通常,您正在编写的SQL没有指定执行事物的特定方式,而是由数据库决定。这通常的工作方式是通过某些规则解析,简化查询,然后将其逻辑表示转换为多个物理执行计划。这些计划与基于表格的启发式和统计数据估算它们的成本有关。然后选择成本最低的计划。