假设我有一个简单的 select * from table;查询我事先知道有多少条目存在。假设是 100。
这三个调用之间有性能差异吗?
1) 从表中选择*;
2) 从表限制 100 中选择 *;
3) select * from table limit 1000;
每个调用都将返回 100 行。不同的限制值或没有限制值会影响调用的速度吗?
最佳答案
是和否。
没有 ORDER BY
的 LIMIT
允许引擎传递任意行。但 LIMIT
越低,速度会更快——时间基本上与交付的行数成正比。
ORDER BY ... LIMIT ...
可能必须在传递某些行子集之前对整个表进行排序。因此,它可能比没有 ORDER BY
慢,甚至慢很多。
使用 ORDER BY
时,速度可能取决于您拥有的索引以及 WHERE
子句中的内容。
我的观点是——现实查询中会发生很多事情,对您的问题的一行答案实际上不会提供任何有用的信息。
关于mysql - 限制已知数量记录的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181007/