限制已知数量的记录的效果

时间:2016-10-21 15:59:59

标签: mysql sql

我们假设我有一个简单的select * from table;查询我事先知道有多少条目存在。我们说100。

这三个电话之间是否有任何性能差异?
1)从表中选择*; 2)从表格限制100中选择*;
3)从表格限制1000中选择*;

每个调用都会返回100行。不同的限制值或没有限制值会影响通话的速度吗?

2 个答案:

答案 0 :(得分:1)

是和否。

没有LIMIT的{​​{1}}允许引擎传递任意行。但是对于较低的ORDER BY,它会更快 - 时间基本上与传递的行数成比例。

LIMIT 可能必须在传递一些行子集之前对整个表进行排序。所以,它可能比没有ORDER BY ... LIMIT ...更慢,可能要慢得多。

使用ORDER BY,速度可能取决于您拥有的索引以及ORDER BY子句中的内容。

我的观点是 - 现实查询中发生了很多事情,对您的问题的单行答案几乎不会提供任何可用的信息。

答案 1 :(得分:-1)

这完全取决于您使用的数据库(即使不同的mysql版本可能会有所不同)。

您可能在指定限制和未指定限制之间存在性能差异(尽管非常小)。由于数据库可能会制定不同的执行计划。

但这只是最初的,因为大多数数据库都会缓存查询。 (她确保在测试此性能时禁用此功能)