【问题标题】:SELECT WHERE ORDER选择在哪里订购
【发布时间】:2015-10-25 17:26:08
【问题描述】:

这两个 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 吗?

【问题讨论】:

标签: mysql sql where


【解决方案1】:

不,任何体面的数据库的查询优化器都会确保按照它认为最合适的顺序执行 where 子句。如果它可能导致更好的执行计划,它还将尝试简化或以其他方式重写您的布尔表达式。

一般来说,您编写的 SQL 并没有指定具体的执行方式,而是由数据库来决定。这通常的工作方式是解析查询,通过某些规则简化,然后将其逻辑表示转换为多个物理执行计划。这些计划与基于表的启发式和统计数据的成本估计相关联。然后选择成本最低的方案。

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多