我懷疑我知道這個問題的答案了,但......LIMIT子句對MySql性能的影響?
考慮以下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;
有三個之間的性能差異顯著?
我懷疑我知道這個問題的答案了,但......LIMIT子句對MySql性能的影響?
考慮以下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;
有三個之間的性能差異顯著?
SQL_CALC_FOUND_ROWS
需要遍歷所有行來計算答案,所以在1和2之間沒有時間百米運動員(除第一個查詢,如果您在表中有較少的超過100萬行可能不會返回任何東西)
第三個查詢將輸出整個表格,而不僅僅是對其行進行計數。
這取決於,如果您添加ORDER BY
並索引正在訂購的列,它可以是顯着更快。
這是因爲它將被執行沒有掃描和排序完整結果集。使用索引將生成一個索引範圍掃描,只要生成所需的行數,將立即啓動和停止索引範圍掃描。
當然,他們是不同的查詢;)我猜每個查詢都會產生相同的結果? – JHollanti 2013-03-27 20:23:33
可能重複的[爲什麼MYSQL的LIMIT偏移量會減慢查詢速度?](http://stackoverflow.com/questions/4481388/why-does-mysql-higher-limit-offset-slow-the-query-down) – 2013-03-27 20:25:23
如果你有100萬行,'SQL_CALC_FOUND_ROWS'需要一段時間,無論如何。 – castis 2013-03-27 20:26:08