【问题标题】:MySQL Performance - Select one row, should I use limit 1? [duplicate]MySQL 性能 - 选择一行,我应该使用限制 1 吗? [复制]
【发布时间】:2017-08-28 13:19:15
【问题描述】:

我正在尝试找出在对具有数百万条记录的 MySQL 数据库执行“选择”查询时使用“限制 1”是否会更快,例如:

SELECT * FROM users where id = 99999;

SELECT * FROM users where id = 99999 LIMIT 1; /* Is it faster? */

我做了一些测试,执行了一些有和没有 LIMIT 的查询,但它们之间的差异非常小(使用 LIMIt 有更好的速度),但我不确定使用“WHERE”之间是否有任何区别" 在非索引列和索引列中,是否存在性能问题。

即使知道“WHERE id = 99999”只会返回一行,我是否应该在我只想返回一个结果的所有查询中使用“LIMIT 1”?

【问题讨论】:

  • 所以看起来如果我在索引列中使用 where 没关系,但使用 LIMIT 1 的“普通”列会更快?
  • 似乎在任何情况下它都会更快,但您只会在id 不是唯一的大桌子上“感觉到”它

标签: mysql database sqlperformance


【解决方案1】:

除了性能问题,在这种情况下我总是使用 LIMIT。原因:源代码的质量和可读性增加,因为阅读代码已经确定只有一个返回值。如果它是一个不唯一的列,我认为 LIMIT 语句是强制性的,以避免通过返回多个值来出错。

【讨论】:

  • 我还要补充一点,如果我必须自己制作一个数据库引擎,我肯定会停止在 LIMIT 1 子句的情况下遍历记录。所以我想所有的数据库引擎都会在第一次命中和 LIMIT 1 之后停止搜索,从而提高性能。
猜你喜欢
  • 2011-08-16
  • 2010-09-24
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
相关资源
最近更新 更多