MySQL千万级单表分页SQL性能优

平时我们对数据库表优化,数据库表量小的时候,没有什么差别,但是随着时间积累,数据量增大,就需要优化sql针对limit优化有很多种方式,1前端加缓存,减少落到库的查询操作2优化SQL3使用书签方式,记录上次查询最新/大的id值,向后追溯M行记录。4使用Sphinx搜索优化。今天使用实例讲解第二种:优化sql何谓延迟关联:通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据。SELECT*FROMuserwherebiz_type=0ANDend_time=-05-29ORDERBYidascLIMIT,20;该sql是一个非常典型的排序+分页查询:orderbycollimitN,OFFSETM,MySQL执行此类sql时需要先扫描到N行,然后再去取M行。对于此类大数据量的排序操作,取前面少数几行数据会很快,但是越靠后,sql的性能就会越差,因为N越大,MySQL需要扫描不需要的数据然后在丢掉,这样耗费大量的时间。如果使用延迟关联优化则:优化后:SELECTa.*FROMusera,(selectidfromuserwherebiz_type=0ANDend_time=-05-29ORDERBYidascLIMIT,20)bwherea.id=b.id


转载请注明:http://www.xcqg58.com/zyyd/zyyd/26848515.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了