Mysql分页语句优化

分页是提高mysql查询速度的方法、然而对于大表来说、分页到后期是越来越慢。用我的数据库举例子。

我的数据库的phone表是380158条数据、算不上那种千万级的数据库。不过做实验也是够了。

SELECT count(*) FROM phone where province="黑龙江" and city="伊春"

查询我们家乡的数据一共是260条。我那这两条件做分页来看mysql执行时间

图

从0,5开始分页速度非常快是毫秒级的

图

时间在递增

图

在38W条的数据中 ,每次翻页的查询时间都在递增、这仅仅是38w的260条。

下面优化这条语句、目前这张表还没有索引。我用索引来优化他。

建立联合索引来优化他

create index p_and_c on phone(province,city)

图

然后在用分页查询再看

图

查询的优化改写

优化一

SELECT * FROM phone a join
( SELECT phone FROM phone where province="黑龙江" and city="伊春" LIMIT 52,5)b on a.phone=b.phone;

例子

优化二

用where 范围的方式进行改写、我们知道大部分表、都设置id主键(自增)id是个int类型、不代条件进行sql优化。

那商品表举例子

SELECT * FROM product_info WHERE product_id >=
(SELECT product_id FROM  product_info LIMIT 12020,1) LIMIT 20

图

Last modification:February 10, 2020
如果觉得我的文章对你有用,请随意赞赏