php MySQL與分頁(yè)效率
更新時(shí)間:2008年06月04日 19:57:59 作者:
作者:老王
如果和MSSQL的TOP語(yǔ)法相比,那么MySQL的LIMIT語(yǔ)法要顯得優(yōu)雅了許多。使用它來(lái)分頁(yè)是再自然不過(guò)的事情了。
最基本的分頁(yè)方式:
SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...
在中小數(shù)據(jù)量的情況下,這樣的SQL足夠用了,唯一需要注意的問(wèn)題就是確保使用了索引:
舉例來(lái)說(shuō),如果實(shí)際SQL類似下面語(yǔ)句,那么在category_id, id兩列上建立復(fù)合索引比較好:
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10
子查詢的分頁(yè)方式:
隨著數(shù)據(jù)量的增加,頁(yè)數(shù)會(huì)越來(lái)越多,查看后幾頁(yè)的SQL就可能類似:
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10
一言以蔽之,就是越往后分頁(yè),LIMIT語(yǔ)句的偏移量就會(huì)越大,速度也會(huì)明顯變慢。
此時(shí),我們可以通過(guò)子查詢的方式來(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í)際可以利用類似策略模式的方式去處理分頁(yè),比如判斷如果是一百頁(yè)以內(nèi),就使用最基本的分頁(yè)方式,大于一百頁(yè),則使用子查詢的分頁(yè)方式。
相關(guān)文章
PHP簡(jiǎn)單實(shí)現(xiàn)上一頁(yè)下一頁(yè)功能示例
這篇文章主要介紹了PHP簡(jiǎn)單實(shí)現(xiàn)上一頁(yè)下一頁(yè)功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了php實(shí)現(xiàn)上一頁(yè)下一頁(yè)功能的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-09-09
PHP Session ID的實(shí)現(xiàn)原理與實(shí)例
這篇文章主要介紹了PHP Session ID的實(shí)現(xiàn)原理與實(shí)例,幫助大家更好的理解和學(xué)習(xí)使用PHP,感興趣的朋友可以了解下2021-05-05
PHP輸出XML格式數(shù)據(jù)的方法總結(jié)
這篇文章主要介紹了PHP輸出XML格式數(shù)據(jù)的方法,結(jié)合實(shí)例形式總結(jié)分析了php常用的xml格式數(shù)據(jù)輸出相關(guān)操作技巧,需要的朋友可以參考下2017-02-02
使用php實(shí)現(xiàn)截取指定長(zhǎng)度
以下是對(duì)使用php實(shí)現(xiàn)截取指定長(zhǎng)度的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下2013-08-08

