网球海报|网球拍哪个牌子好|
软件 聊天 安全 视频 浏览器 下载 系统 办公 教学 输入法
免费 域名 空间 相册 邮箱 资源 网赚 试用 优惠 工具
教程 设计 三维 学院 办公 网页
素材 PSD 矢量 网页 PPT 动画
美女 唯美 大生活 美图 风景 时尚艺
资讯 新闻 专题 热点
您的位置: 广信之家 > 网络学院 > 建站资讯 > 文章正文

优化MySql limit处理大数据量分页方法与实例详解

时间:10-26 12:16 来源:广信之家 整理:广信小编 我要评论(0)
字号:T|T
内容提要:
  广信之家就本文中给大家带来优化MySql limit处理大数据量分页方法与实例详解,帮助朋友们参考学习mysql查询中的limit语句在处理大数量所分页时的优化方法。Mysql的limit给分页带来了很大方便,但数据量一大时,limit的性能就?#26412;?#19979;降。

广信之家就本文中给大家带来优化MySql limit处理大数据量分页方法与实例详解,帮助朋友们参考学习mysql查询中的limit语句在处理大数量所分页时的优化方法。

Mysql的limit给分页带来了很大方便,但数据量一大时,limit的性能就?#26412;?#19979;降。
例如,取10条数据:

select * from yanxue8_visit limit 10000,10
select * from yanxue8_visit limit 0,10

这二个sql语句在执行性能上,绝不是一个数量级别的。

关于mysql limit的优化,这里贴出一段文字:
对limit的优化,不是直?#37038;?#29992;limit,而是首先获取到offset的id,然后直?#37038;?#29992;limit size来获取数据。
根据它的数据,明显要好于直?#37038;?#29992;limit。

这里我们使用数据分两种情况进行测试。(测试环境win2033+p4双核 (3GHZ) +4G内存 Mysql 5.0.19)

1、offset比较小时。 

select * from yanxue8_visit limit 10,10
#多次运?#26657;?#26102;间保持在0.0004-0.0005之间
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10;
#多次运?#26657;?#26102;间保持在0.0005-0.0006之间,主要是0.0006

结论:
偏移offset较小时,直?#37038;?#29992;limit较优。
这个很显然是子查询的原因。

2、offset大时。

select * from yanxue8_visit limit 10000,10
#多次运?#26657;?#26102;间保持在0.0187左右
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10000,1
) limit 10;

多次运?#26657;?#26102;间保持在0.0061左右,只有前者的1/3。
可以预计offset越大,后者越优。
?#38498;?#20877;写limit语句时要注意了,好好优化下Mysql。
 
据表 collect ( id, title ,info ,vtype) 就这4个字段,其中 title 用定长,info 用text, id
是逐渐,vtype是tinyint,vtype是索引。

这是一个基本的新闻系统的简单模型。
现在往里面填充数据,填充10万篇新闻。
最后collect 为 10万条记录,数据库教程表?#21152;?#30828;盘1.6G。OK ,看下面这条sql语句:
select id,title from collect limit 1000,10; 很快?#25442;?#26412;上0.01秒就OK。

再来看这条语句:

select id,title from collect limit 90000,10;

从9万条开始分页,结果8-9秒完成,性能?#29616;?#30340;差啊。

可以这样优化:

select id from collect order by id limit 90000,10; 很快,0.04秒就OK。

使用id主键做索引,速度没得说。

改进后的方法:

select id,title from collect where id>=(select id from collect order by id limit 90000,1) limit 10; 

 
这条语句依然是用了id做索引的结果。

 

希望通过本文的实例详解,能帮助朋友们进一步的了解mysql的limit语句在处理大数量的高效率。

    相关阅读:

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    免责申明:以上内容仅代表原创者观点,其内容未经本站证实,优化MySql limit处理大数据量分页方法与实例详解对以上内容的真实性、完整性不作任何保证或?#20449;擔?#36716;载目的在于传递更多信息,由此产生的后果与优化MySql limit处理大数据量分页方法与实例详解无关;如以上转载内容不慎侵犯了您的权益,请联系我们将会及时处理。
    [责任编辑:广信小编]

    精彩图文

    登录 (请登录发言,并遵守 相关规定)
    如果你对广信之家有任?#25105;?#35265;或建议,请到交流?#25945;?#21453;馈。到留言板反馈
    网球海报
    购彩计划软件下载 深圳11选五5开奖结果 时时彩怎么一天稳赚800 中彩网一分快三怎么玩 分分彩下载 北京pk赛车走势图 山东时时开奖视频直播 七星彩美期开奖计划 时时彩每天赢钱的方法 分分彩稳赚计划