【问题标题】:Does making a MySQL select/update more specific make it faster / give it better performance使 MySQL 选择/更新更具体是否使其更快/提供更好的性能
【发布时间】: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


【解决方案1】:

一般来说,您的查询越具体越好,但就访问时间而言,它仍然需要梳理索引才能找到给定的记录。较小的结果集仅意味着返回的点击次数较少,因此您会看到速度提高。

我经常使用 EXPLAIN 查询来准确查看给定查询在通过 SQL 引擎时发生的情况。 MS SQL 有一个方便的查询诊断功能。

EXPLAIN SELECT `someCol` FROM someTable;

【讨论】:

  • 谢谢,我要进行更多测试。
猜你喜欢
  • 2020-03-02
  • 2017-03-07
  • 1970-01-01
  • 2011-01-11
  • 2012-01-21
  • 2011-05-14
  • 2017-12-16
  • 2010-09-21
  • 2011-04-07
相关资源
最近更新 更多