2008年4月1日 星期二

MySQL分頁優化

MySQL中一般的分頁作法大多利用Limit限制回傳的資料筆數來達成分頁效果
例如下面的代碼
Select * From news limit 0, 100 第一頁
Select * From news limit 100,100 第二頁
Select * From news limit 200,100 第三頁
今天突然來了一個思路
和前作 上下頁查詢優化
的思路略同
定位到id值後再用id值作條件
優化的作法

第一頁
Select * From news Where id >=(Select id From news Order By id limit 0,1) limit 100
第二頁
Select * From news Where id >=(Select id From news Order By id limit 100,1) limit 100
第三頁
Select * From news Where id >=(Select id From news Order By id limit 200,1) limit 100

經測試,一萬條數據以內一般的分頁作法比較快
超過一萬條後優化過的作法優勢就呈現出來
當數據量愈多,優化的分頁查詢速度愈快
所以在第一次查詢總資料筆數後可以增加一個判決
檢查資料量是否超過一萬筆

Select count(*) AS `count` From news //製作分頁的前置作業

if($rows['count'] <10000){
$sql = "Select * From news limit 0, 100 ";
}else{
$sql = "Select * From news Where id >=( Select id From news Order By id limit 0,1) limit 100";
}


摘自:http://jian-zhoung.blogspot.com/2007/11/mysql.html

沒有留言:

wibiya widget