设为首页 - 加入收藏
您的当前位置:主页 > 资讯 > 行业新闻 > 正文

再用传统分页 SQL 你就死定啦!!!tbet88娱乐

来源:未知 编辑:通博tbet88 时间:2017-12-11
www.tbet88.com通博娱乐以高度负责任的态度为您提供最新、最及时的球赛状况,tbet88拥有网络赚钱的优势,注册送体验金的平台现在很多,所以才有了万人齐聚一堂的欢庆场面。

  正在分页功能开辟时,我们很习习用 LIMIT O,N 的方式来取数据。这种方式正在碰到超大分页偏移量时是会把 MySQL 搞死的,请别再这么写 SQL 了

  一般而言,分页 SQL 的耗时跟着 start 值的添加而急剧添加,我们来看下面这 2 个分歧起始值的分页 SQL 施行耗时:

  一般滴,想要优化分页的终极方案就是:没有分页,哈哈哈~~~,不要说我讲废话,确实如斯,能够把分页算法交给 Solr、Lucene、Sphinx 等第三方处理方案,特别是碰到有恍惚搜刮的需求时,没需要让 MySQL 来做它不擅长的工作。

  当然了,有小伙伴说,用第三方太麻烦了,我们就想用 MySQL 来做这个分页,咋办呢?莫急,且待我们慢慢阐发。

  能够看到,虽然是通过从键索引扫描数据的,但第二个 SQL 需要扫描的记实数太大了,并且需要先扫描约 935510 笔记录,然后再按照排序成果取 10 笔记录,这必定长短常慢了。

  尽可能从索引中间接获取数据,避免或削减再次扫描行数据的次数(也就是我们凡是所说的避免回表);

  留意这里采用了两次倒序排,因而正在取 LIMIT 的 start 值时,比本来的值加了 10,即 935510,不然成果将和本来的不分歧

  采用 INNER JOIN 优化,JOIN 子句里也优先从索引获取 ID 列表,然后间接联系关系查询获得最终成果,这里不需要加 10

  至此,我们看到采用子查询或者 INNER JOIN 进行优化后,都有大幅度的提拔,这个方式也同样合用于较小的分页。

  单从提拔比例说,仍是挺可不雅的。并且这两种优化方式根基上可合用于各类分页模式,强烈建议一起头就改成这种 SQL 写法习惯。

  如许看就和较着了,特别是针对大分页的环境,因而我们优先保举利用 INNER JOIN 体例优化分页算法。

  上述每次测试都沉启 mysqld 实例,而且加了 SQL_NO_CACHE,以包管每次都是间接数据文件或索引文件中读取。若是数据颠末预热后,查询效率会必然程度提拔,但上述响应的效率提拔比例仍是根基分歧的。

相关文章:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

通博tbet88 - 娱乐先行者 联系QQ:498872301 邮箱:498872301@qq.com

Copyright © 2012-2017 通博tbet88 版权所有

Top