|
最基本的分頁(yè)方式:
SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...
在中小數(shù)據(jù)量的情況下,這樣的SQL足夠用了,唯一需要注意的問(wèn)題就是確保使用了索引:
舉例來(lái)說(shuō),如果實(shí)際SQL類(lèi)似下面語(yǔ)句,那么在category_id, id兩列上建立復(fù)合索引比較好:
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10
子查詢(xún)的分頁(yè)方式:
隨著數(shù)據(jù)量的增加,頁(yè)數(shù)會(huì)越來(lái)越多,查看后幾頁(yè)的SQL就可能類(lèi)似:
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10
一言以蔽之,就是越往后分頁(yè),LIMIT語(yǔ)句的偏移量就會(huì)越大,速度也會(huì)明顯變慢。
此時(shí),我們可以通過(guò)子查詢(xún)的方式來(lái)提高分頁(yè)效率,大致如下:
SELECT * FROM articles WHERE category_id = 123 AND id >= (
SELECT id FROM articles ORDER BY id LIMIT 10000, 1
) LIMIT 10
----------------------------------------
實(shí)際可以利用類(lèi)似策略模式的方式去處理分頁(yè),比如判斷如果是一百頁(yè)以?xún)?nèi),就使用最基本的分頁(yè)方式,大于一百頁(yè),則使用子查詢(xún)的分頁(yè)方式。
php技術(shù):php MySQL與分頁(yè)效率,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。