【发布时间】:2013-05-31 18:37:04
【问题描述】:
在 MySQL 或 SQL 中,使选择或更新查询更具体会使其更快吗?
我的意思是,这个查询是:
UPDATE `table` SET column = 'Hi Mom!' WHERE `id` = 123 AND `grouping_id` = 456 AND `other_column` = 0;
...比这个查询快:
UPDATE `table` SET column = 'Hi Mom!' WHERE `id` = 123;
我一直在破坏大型数据库上的测试查询,我可以看到使查询更具体会使 MySQL 检查更少的行。但是,它并不一定看起来更快或处理器密集度更低。有什么想法吗?
注意:我会使用大多数列来缩小结果范围,在这种情况下,group_id 要么是索引的,要么是布尔值。
【问题讨论】:
-
你有没有看过execution plan自己看看?
-
取决于您是否有主键、索引并正在使用它,您是否在测试中检查过?
-
如果
id是主键,我猜这是计划者用来查找行的唯一索引。在找到该行之后,它当然会检查以确保其他条件为真,但这当然会非常快,因为它只查看一行。 -
另外,如果您真的想知道幕后发生的事情,我建议您浏览this site。
-
PhaDaPhunk 不,我没有深入到执行计划。谢谢,我会调查的。
标签: mysql sql performance