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