• ADADADADAD

    分析SQL优化的limit分页延迟关联[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:15:13

    作者:文/会员上传

    简介:

    MySQL分页查询最头疼的问题是偏移量非常大,比如limit 10000,20,就要检索出10020条记录,值返回最后20条,前边的10000行全部抛弃掉。对于检索字段非常多的情况下,效率更为糟糕。SE

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MySQL分页查询最头疼的问题是偏移量非常大,比如limit 10000,20,就要检索出10020条记录,值返回最后20条,前边的10000行全部抛弃掉。对于检索字段非常多的情况下,效率更为糟糕。

    SELECTid,order_seq,product_id,user_id,artisan_id,order_price,real_pay,date_format(order_time,'%Y-%m-%d%H:%i:%s')order_time,user_address,STATUS,date_format(pay_time,'%Y-%m-%d%H:%i:%s')pay_time,user_contact,coupon_price,coupon_effect_price,order_over_time,product_price,product_trade_price,source_from,create_time,out_channelFROMus_orderWHERE(source_from!=20ORsource_fromISNULL)ANDout_channel=0ORDERBYidDESCLIMIT1000000,10

    例如这个SQL,耗时110s。我们需要检索出1000010条记录,然后取最后10条,包括近20个字段,对于IO的消耗是非常大的,与此同时,因为SQL执行时间较长,CPU时间占比也较高,在并发高的情况下,很可能出现CPU打满。

    对于这个SQL本身来说,偏移量1000000我们无法改变,那我们如何减少MySQL扫描的页来提高查询速度呢?

    SELECTid,order_seq,product_id,user_id,artisan_id,order_price,real_pay,date_format(order_time,'%Y-%m-%d%H:%i:%s')order_time,user_address,STATUS,date_format(pay_time,'%Y-%m-%d%H:%i:%s')pay_time,user_contact,coupon_price,coupon_effect_price,order_over_time,product_price,product_trade_price,source_from,create_time,out_channelFROMus_orderinnerjoin(selectidfromus_orderwhere(source_from!=20ORsource_fromISNULL)ANDout_channel=0ORDERBYidDESCLIMIT1000000,10)asaausing(id)WHERE(source_from!=20ORsource_fromISNULL)ANDout_channel=0
    分析SQL优化的limit分页延迟关联.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: sql