SQL_CALC_FOUND_ROWS是指在執行帶LIMIT的查詢時,附帶統計一下如果不加LIMIT的話將會輸出多少條結果。
eg:
SELECT SQL_CALC_FOUND_ROWS * FROM `table_a` LEFT JOIN `table_b` on `table_a`.id = `table_b`.a_id GROUP BY `table_a`.id ORDER BY `ctime` desc limit 0,10;
查詢完畢後再執行:
SELECT FOUND_ROWS();
這個語句返回group by 後的總記錄數
顯示
-------------|
FOUND_ROWS() |
-------------|
1000 |
-------------|
FOUND_ROWS()得到的數字是臨時的,執行下一條語句就會失效,需要保存在一個變量中.
在很多分頁的程序中都這樣寫:
SELECT COUNT(*) from `data_table` WHERE ......; 查出符合條件的記錄總數
SELECT * FROM `data_table` WHERE ...... limit M,N; 查詢當頁要顯示的數據
沒有進行測試,需要比較COUNT 和 SQL_CALC_FOUND_ROWS 較耗時的需要自測