2

我怀疑我已经知道了这个问题的答案,但是......

给定以下 3 个 MySQL 语句:

SELECT SQL_CALC_FOUND_ROWS title FROM STUFF LIMIT 1000000, 1;
SELECT SQL_CALC_FOUND_ROWS title FROM STUFF LIMIT 1;
SELECT title FROM STUFF;

三者之间的性能有显着差异吗?

4

2 回答 2

2

SQL_CALC_FOUND_ROWS需要遍历所有行来计算答案,因此 1 和 2 之间没有时间差(如果表中的行少于 1000000 行,第一个查询可能不会返回任何内容)

第三个查询将输出整个表,而不仅仅是计算其行数。

于 2013-03-27T20:31:13.987 回答
0

这取决于,如果您添加ORDER BY并索引正在排序的列,它可能会明显更快

这是因为它将在不扫描和排序完整结果集的情况下执行。使用索引将产生一个索引范围扫描,该扫描将在生成所需的行数后立即启动和停止。

于 2013-03-27T20:25:27.187 回答