一般做網站都需要做到一個功能... 分頁。
除非單純只有「上一頁」或「下一頁」
一般都會有個頁數和總頁數。
這個就困難了。
一般來說取得第二頁的方式是... (當一頁10筆的情況下)
select * from xxx limit 10,10;
然後再算出總數
select count(*) from xxx;
雖然說mysql會快取,但是如果量大的話,還是兩次完整的查詢。
其實可以用更快的方法算出總數
在select後面加一串指令
SELECT SQL_CALC_FOUND_ROWS * from xxx limit 10,10; /* 也可以不加SQL_CALC_FOUND_ROWS,加了會比較好,文件寫的*/
中間不要做其它的查詢,取得總數。
SELECT FOUND_ROWS(); /* 取得總數 */
雖然都是兩次query,但這種方法比較快,因為是「順便」把算出來的總數,從記憶體中丟出來的。
select * from xxx limit 10,10;
然後再算出總數
select count(*) from xxx;
雖然說mysql會快取,但是如果量大的話,還是兩次完整的查詢。
其實可以用更快的方法算出總數
在select後面加一串指令
SELECT SQL_CALC_FOUND_ROWS * from xxx limit 10,10; /* 也可以不加SQL_CALC_FOUND_ROWS,加了會比較好,文件寫的*/
中間不要做其它的查詢,取得總數。
SELECT FOUND_ROWS(); /* 取得總數 */
雖然都是兩次query,但這種方法比較快,因為是「順便」把算出來的總數,從記憶體中丟出來的。
當然時看到這個方法,真的很高興,希望你們也是。
參考資料:
http://www.arraystudio.com/as-workshop/mysql-get-total-number-of-rows-when-using-limit.html