php下MYSQL limit的优化
2015-01-24信息快讯网
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越大,后者越优。
php addslashes和mysql_real_escape_string
phpMyAdmin链接MySql错误 个人解决方案
PHP MYSQL乱码问题,使用SET NAMES utf8校正
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
在mysql数据库原有字段后增加新内容
MYSQL 小技巧 -- LAST_INSERT_ID
PHP CKEditor 上传图片实现代码
关于页面优化和伪静态
php 代码优化的42条建议 推荐
php getsiteurl()函数
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
php 多个submit提交表单 处理方法
mysql 性能的检查和优化方法
php mssql 分页SQL语句优化 持续影响
使用Limit参数优化MySQL查询的方法
mysql limit查询优化分析
Mysql中limit的用法方法详解与注意事项
深入解析php模板技术原理【一】
优化使用mysql存储session的php代码
最简便的MySql数据库备份方法MySQLdump第1/2页
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
分页详解 从此分页无忧(PHP+mysql)
php Mysql日期和时间函数集合
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
PHP 优化配置――加速你的VBB,phpwind,Discuz,IPB,MolyX第1/2页
PHP5.2下chunk_split()函数整数溢出漏洞 分析
解决php中Cannot send session cache limiter 的问题的方法
使用Xdebug调试和优化PHP程序之[1]
Dedecms V3.1 生成HTML速度的优化办法
使用apache模块rewrite_module (转)
再次研究下cache_lite