MySQL分页查询的SQL优化,950W+数据查询时间从17s到350ms

有一张订单表,未进行分库分表,目前的数据量为9686697,使用了limit分页查询,SQL语句如下:

SELECT  查询字段 FROM  `table_name` WHERE 查询条件 LIMIT 0,10;

查询耗时:16 s 947 ms (execution: 16 s 835 ms, fetching: 112 ms)。 

 

优化操作:
查询条件放到子查询中,子查询只查主键ID,然后使用子查询中确定的主键关联查询其他的属性字段;减少回表操作,利用延迟关联或者子查询优化超多分页场景。

SELECT  查询字段 FROM `table_name` AS main_tale RIGHT JOIN(SELECT  子查询只查主键 FROM `table_name`WHERE 查询条件 LIMIT 0,10) AS temp_table ON temp_table.主键 = main_table.主键;

按照以上调整SQL后,查询耗时:348 ms (execution: 162 ms, fetching: 186 ms)。

 

posted @ 2022-07-05 14:02  海盗哥哥  阅读(98)  评论(0)    收藏  举报