我有一個複雜的MySQL查詢,它需要大量的時間,從超過150k行的表中進行選擇,並且有多個JOINS和子查詢。我限制了結果的數量,但是我需要知道總的行數。MySQL總行數
有沒有辦法重複查詢與COUNT(*)
作爲領域得到他們? (重複查詢幾乎使腳本完成的時間加倍)
我有一個複雜的MySQL查詢,它需要大量的時間,從超過150k行的表中進行選擇,並且有多個JOINS和子查詢。我限制了結果的數量,但是我需要知道總的行數。MySQL總行數
有沒有辦法重複查詢與COUNT(*)
作爲領域得到他們? (重複查詢幾乎使腳本完成的時間加倍)
它實際上可能更快地使兩個查詢(所以你可能只想做一些快速測試):
在任何情況下,儘量確保COUNT(*)可以使用索引(如果您使用EXPLAIN查詢,它會在Extra列中顯示「使用索引」)
如果不需要精確地確定,您也可以考慮緩存COUNT(*)結果(因爲你限制你的結果)。
MySQL有一個名爲SQL_CALC_FOUND_ROWS
的子句,您在SELECT
之後和任何字段名稱之前放置了子句。然後你調用第二個查詢,它只是SELECT FOUND_ROWS() AS rows
,它給你前面的查詢找到了多少行。
有關詳情,請訪問:http://dev.mysql.com/doc/refman/4.1/en/information-functions.html#function_found-rows – cmptrgeekken 2010-03-03 02:15:17