我们假设我有一个简单的select * from table;查询我事先知道有多少条目存在。我们说100。
这三个电话之间是否有任何性能差异?
1)从表中选择*;
2)从表格限制100中选择*;
3)从表格限制1000中选择*;
每个调用都会返回100行。不同的限制值或没有限制值会影响通话的速度吗?
答案 0 :(得分:1)
是和否。
没有LIMIT
的{{1}}允许引擎传递任意行。但是对于较低的ORDER BY
,它会更快 - 时间基本上与传递的行数成比例。
LIMIT
可能必须在传递一些行子集之前对整个表进行排序。所以,它可能比没有ORDER BY ... LIMIT ...
更慢,可能要慢得多。
使用ORDER BY
,速度可能取决于您拥有的索引以及ORDER BY
子句中的内容。
我的观点是 - 现实查询中发生了很多事情,对您的问题的单行答案几乎不会提供任何可用的信息。
答案 1 :(得分:-1)
这完全取决于您使用的数据库(即使不同的mysql版本可能会有所不同)。
您可能在指定限制和未指定限制之间存在性能差异(尽管非常小)。由于数据库可能会制定不同的执行计划。
但这只是最初的,因为大多数数据库都会缓存查询。 (她确保在测试此性能时禁用此功能)