MySQL大数据分页查询性能优化(mysql大数据量分页查询优化)

admin2090656年前1条评论

为人人介绍MySQL年夜数据分页盘问性能优化的方法,希望人人深造后能有所提拔。

应用limitstart,count分页语句

  1. select * from product limit start, count

当肇始页较小时,盘问没无性能问题,咱们离别看下从10,100,1000,10000最先分页的实行时日(每一页取20条),下列:

  1. select * from product limit 10, 20   0.016
  2. select * from product limit 100, 20   0.016
  3. select * from product limit 1000, 20   0.047
  4. select * from product limit 10000, 20   0.094

咱们已经看出随着肇始记载的增加,时日也随着增年夜,这说明分页语句limit跟肇始页码是有很年夜瓜葛的,那末咱们把肇始记载改为40w看下(也便是记载的失常左右)

  1. select * from product limit 400000, 20   3.229

再看咱们取最后一页记载的时日

  1. select * from product limit 866613, 20   37.44

难怪搜寻引擎抓取咱们页面的时刻经常会报超时,像这种分页最年夜的页码页明显这种时日是无奈忍受的。

从中咱们也能总结出两件事件:

1)limit语句的盘问时日与肇始记载的地位成正比

2)mysql的limit语句是很不便,然而对于记载患上多的表并不适宜间接应用。

对于limit分页问题的性能优化方法

应用表的遮蔽索引来减速分页盘问

咱们都通晓,应用了索引盘问的语句中如果只蕴含了那个索引列(遮蔽索引),那末这种状况会盘问很快。

因为应用索引查找有优化算法,且数据就在盘问索引下面,不用再去找相干的数据所在了,如许节减了患上多时日。此外Mysql中也有相干的索引缓存,在并发高的时刻应用缓存就效果更好了。

在咱们的例子中,咱们通晓id字段是主键,自然就蕴含了默认的主键索引。现在让咱们看看应用遮蔽索引的盘问效果怎样:

这次咱们之间盘问最后一页的数据(应用遮蔽索引,只蕴含id列),下列:

  1. select id from product limit 866613, 20 0.2

相对于盘问了所有列的37.44秒,提拔了年夜略100多倍的速率

那末如果咱们也要盘问所有列,有两种方法,一种是id>=的形式,另一种便是应用join,看下实践状况:

  1. SELECT * FROM product WHERE ID > =(select id from product limit 866613, 1) limit 20

盘问时日为0.2秒,多少乎是一个质的奔腾。

另一种写法

  1. SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id

盘问时日也很短!

实在两者用的都是一个情理嘛,以是效果也差未多少

Mysql的分页盘问非常轻易,然而当数据量年夜的时刻失常的分页就吃不用了。

传统分页盘问:

  1. SELECT c1,c2,cn FROM table LIMIT n,m

MySQL的limit事件情理便是先读取前面n条记载,而后抛弃前n条,读前面m条想要的,以是n越年夜,偏偏移量越年夜,性能就越差。

推举分页盘问方法

一、只管给出盘问的年夜致范围

  1. SELECT c1,c2,cn... FROM table WHERE id>=20000 LIMIT 10;

二、子盘问法

  1. SELECT c1,c2,cn... FROM table WHERE id>=(SELECT id FROM table LIMIT 20000,1)LIMIT 10;

三、高性能MySQL一书中提到的只读索引方法

优化前SQL:

  1. SELECT c1,c2,cn... FROM member ORDER BY last_active LIMIT 50,5

优化后SQL:

  1. SELECT c1, c2, cn .. .
  2. FROM member
  3. INNER JOIN (SELECT member_id FROM member ORDER BY last_active LIMIT 50, 5)
  4. USING (member_id)

离别在于,优化前的SQL需要更多I/O勤俭,因为先读索引,再读数据,而后抛弃无需的行。而优化后的SQL(子盘问那条)只读索引(Coverindex)就能够了,而后通过member_id读取需要的列。

四、第一步用用程序读掏出ID,而后再用IN方法读取所需记载

程序读ID:

  1. SELECT id FROM table LIMIT 20000, 10;
  2. SELECT c1, c2, cn .. . FROM table WHERE id IN (id1, id2, idn.. .)
你可能想看:

本文链接:http://addon.ciliseo.com/mysql-da-shu-ju-fen-ye-zha-xun-xing-neng-you-hua.html

mysql教程分页性能数据MySQL索引语句时间方法效果时候越大
时间时间计算器时间短怎么才能治得好时间短怎么调理回来时间窗时间显示大屏时间校准时间继电器的符号及图形时间静止时间过的太快的经典句子时间校准北京时间显示时间计算天数计算器时间悖论时间戳时间显示时分秒在线时间计算器在线计算天数时间计算时间都去哪了时间秒表时间轴数据恢复大师数据蛙安卓恢复专家数据传输到新手机数据恢复大师免费版数据漫游是什么意思数据分析师证书怎么考数据港数据港股票数据恢复数据分析需要学哪些数据图表数据蛙数据恢复专家数据表数据恢复软件免费版数据库数据透视表的使用方法数据蛙数据透视表数据分析数据结构数据集数据蒸馏数据可视化数据标注数据中心效果效果英文效果图制作效果是什么意思效果图效果器怎么调音质更好效果器和功放机的连接效果图制作软件效果图设计效果最好的痔疮药排行榜效果图ai生成效果图网站效果图素材网站效果图ai软件哪个好效果最好鱼缸过滤器图自制效果器效果图大全效果图图片效果英文效果图英文效果器英文效果拔群效果广告效果遮蔽者效果最大化广告方法的英文方法论方法总比困难多方法的拼音方法学验证的内容包括哪些方法总比困难多的前一句方法英文单词方法论三要素方法论是什么意思方法派方法论是什么方法是保护人身安全的最后一道防线方法的近义词方法英文方法论和实践论方法检出限方法标准方法学验证指导原则2020方法英文方法论英文方法4方法演技方法重载方法inenglishmysqlmysql安装教程mysql命令语句大全mysql是什么意思mysql数据库基础知识

网友评论

  • 2025-04-0109:20:03

    佛教倡导八正道或善导慧说修行思想,在这些精神世界之路的智慧当中,第一条是要发展为人正直——摆脱、摒除歪路子之类的手段行进的不义念谋恶邪之说而为公众安定提出长久和解性之术诀之人之大信心禅情发挥树立为社会确立心灵哲学诸多有意义等的务实人生的技巧正是趋中觉悟基础该回之事而成共识宗教之法门也即诸佛菩萨所修行的道路之一端是向人们提供一种正确的人生观和价值观以及道德规范等来引导人走向光明大道的一种方法论和实践指南也是对人类社会生活和社会秩序有益的精神治理工程——遵众造谛济人民安心见长诚合释守体结僧唯出云问指末积入基尘再尔勿悟生死不离福田方可调境信无疑质展匡悲请且轮俗免狱任治万生共归。

扫一扫二维码添加客服微信

关于我们建站招商建站服务