SQL优化之Limit优化(及Limit使用)

Limit参数的使用,分为两种情况:【limit n】和【limit m,n】

一、【Limit m,n】

        Limit的下标默认从0开始,第一个参数是下标,查数据的话是从第一条开始查,第二参数就限定了查几条数据。

Select * from table limit 0,3; --检索记录为1-4行数据
Select * from table limit 5,-1; --检索记录为6-最后一行数据

        其实去扫描m+n条数据,然后过滤掉前面的m条数据,当m越大,那么需要扫描的数据也就越多,性能也会越来越慢。

EXPLAIN SELECT * FROM  product_new LIMIT 300000,10  -- 很慢很慢
EXPLAIN SELECT * FROM  product_new ORDER BY id LIMIT 300000,10  -- 需要添加排序条件 就能走到id的索引

        针对这种情况,有以下几种方案可以进行一定的优化。

1.如果id是趋势递增的,那么每次查询都可以返回这次查询最大的ID,然后下次查询,加上大于上次最大id的条件,这样会通过主键索引去扫描,并 且扫描数量会少很多很多。因为只需要扫描where条件的数据

SELECT * FROM  product_new WHERE id>300396 ORDER BY id LIMIT 10  -- 根据id查询,并且使用where过滤

2.先limit出来主键ID,然后用主表跟

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值