Chinaunix首页 | 论坛 | 博客
  • 博客访问: 560254
  • 博文数量: 166
  • 博客积分: 4038
  • 博客等级: 上校
  • 技术积分: 1115
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:29
文章分类

全部博文(166)

文章存档

2010年(12)

2009年(126)

2008年(28)

分类: Mysql/postgreSQL

2009-04-14 16:06:42

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";
}
阅读(847) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~