mysql - 查询优化 - WHERE 子句中的表达式顺序

标签 mysql sql performance optimization

假设我有一个名为 numbers 的表:

userID  ColA  ColB
------------------
25      10     11
25      10     16
28      10     11
28      10     16
29      12     14  
29      10     16

我想找到用户 ID 为 28 且 colA = 10 和 colB = 16 的所有行

我的问题是查询结构。如果我先查找 userID,然后查找 colA 和 colB 值,例如

select * from numbers where userID=28 AND (colA=10 AND colB=16)

这比首先查找值更快吗?

select * from numbers where (colA=10 AND colB=16) AND userID=28

还是真的没有太大区别?我想我是在询问引擎如何读取查询结果,因为 (colA=10 AND colB=16) 的结果多于 userID=28。因此,我会先假设最少的可能?

我也了解索引等。

最佳答案

您的 RDBMS 将为该查询找出最佳执行计划。您将无法更改这些子句的顺序来提高性能,因为 RDBMS 在制定计划时已经考虑了类似的事情。

您可以使用 EXPLAIN命令以查看有关 RDBMS 决定使用的实际执行计划的更多信息。

关于mysql - 查询优化 - WHERE 子句中的表达式顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21146586/

相关文章:

python - 有没有更好的方法来提高连接速度?

java - CollectionUtils.isNotEmpty 和 In Place 检查之间的性能差异

mysql - 嵌套 SQL 查询 - 逻辑问题

php - mysql 数据库规范化

mysql - 单个表上的多个 select 语句

mysql - 你能将字符异常编程到 MySQL 的数字列中吗?

php - OO Mysqli PHP 数据无法正确显示

PHP/SQL JOIN 2 个表并获得平均分

php - fetch_assoc() 错误 SQL PHP

c - 适用于 Windows 的硬件性能计数器 API