当前位置: 首页 > 图文教程 > 网络编程 > PHP > mysql limit查询优化分析

PHP
精通PHP的十大要点
从SQL server中将数据库导入Mysql数据库
使用PHP程序直接调用文本文件的内容实例
增加PHP的Session存储和处理能力
关于PHP操作文件的一些FAQ总结
PHP程序开发的原则汇总
PHP开发者必不可少的五个发展要素
PHP数组读取的循环操作
PHP识别24位BMP的验证码
PHP开发人员应熟悉的五个概念
PHP网站开发需要掌握的10个技巧
三种解决PHP乱码问题的办法
PHP下载文件名乱码问题详解
PHP安全之Register Globals
PHP构建语义Web CRUD操作
40条技巧优化php代码
xml+php动态载入与分页
PHP安全之错误报告
网页中PHP脚本中include文件报错解决方法
php分页类 只用传入总页数

PHP 中的 mysql limit查询优化分析


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 203 ::
收藏到网摘: n/a

MYSQL的优化是非常重要的。其他最常用也最需要优化的就是limit。mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。 同样是取10条数据
select * from yanxue8_visit limit 10000,10 和
select * from yanxue8_visit limit 0,10
就不是一个数量级别的。
网上也很多关于limit的五条优化准则,都是翻译自mysql手册,虽然正确但不实用。今天发现一篇文章写了些关于limit优化的,很不错。原文地址:http://www.zhenhua.org/article.asp?id=200
文中不是直接使用limit,而是首先获取到offset的id然后直接使用limit size来获取数据。根据他的数据,明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。(测试环境win2033+p4双核 (3GHZ) +4G内存 mysql 5.0.19)
1、offset比较小的时候。
select * from yanxue8_visit limit 10,10
多次运行,时间保持在0.0004-0.0005之间
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10
多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
2、offset大的时候。
select * from yanxue8_visit limit 10000,10
多次运行,时间保持在0.0187左右
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10000,1
) limit 10
多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。