mysql大数据量分页查询优化

我的数据库数据量不够,不到两万条,但是也可以看出来效果了,看一下下面两个分页的区别。

前10行的分页查询耗时3ms;

 

1000行开始的10行,花费时间是7ms,似乎差距不大;

 

5000行之后的10行,花费时间22ms,就已经是之前的数倍了;

 

15000行之后的10行,花费时间是第一个sql的数十倍; 

1、主键条件优化查询

查询结果是15000后的10行(注意查询条件) ,花费时间仅为3ms;但是此查询有一定的限制,首先需要索引是int/bigint等数据类型,其次该sql需要先在代码中计算出本次分页查询的其实id值,然后以id值作为查询条件。

2、分步查询

我们知道mysql索引会包含索引列本身的值,但是不一定会包含其他列的值(具体可查看聚簇索引、非聚簇索引的区别),所以如果sql仅返回索引列则会通过索引扫描,执行速度会快很多:

如图仅查询索引列的情况下,花费时间为5ms;

然后将该sql的查询结果作为条件,查询所有列:

由此可以看出,这种查询方式较直接分页查询块很多,而且数据量越大差距越明显。 

下面可以看一下sql的执行计划,返回所有列:

 

返回索引列(主键) :

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值