這篇文章主要介紹“分析SQL優(yōu)化的limit分頁延遲關(guān)聯(lián)”,在日常操作中,相信很多人在分析SQL優(yōu)化的limit分頁延遲關(guān)聯(lián)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”分析SQL優(yōu)化的limit分頁延遲關(guān)聯(lián)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
為海陵等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及海陵網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、海陵網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
MySQL分頁查詢最頭疼的問題是偏移量非常大,比如limit 10000,20,就要檢索出10020條記錄,值返回最后20條,前邊的10000行全部拋棄掉。對(duì)于檢索字段非常多的情況下,效率更為糟糕。
SELECT id, 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_channel FROM us_order WHERE ( source_from != 20 OR source_from IS NULL ) AND out_channel = 0 ORDER BY id DESC LIMIT 1000000,10
例如這個(gè)SQL,耗時(shí)110s。我們需要檢索出1000010條記錄,然后取最后10條,包括近20個(gè)字段,對(duì)于IO的消耗是非常大的,與此同時(shí),因?yàn)镾QL執(zhí)行時(shí)間較長,CPU時(shí)間占比也較高,在并發(fā)高的情況下,很可能出現(xiàn)CPU打滿。
對(duì)于這個(gè)SQL本身來說,偏移量1000000我們無法改變,那我們?nèi)绾螠p少M(fèi)ySQL掃描的頁來提高查詢速度呢?
SELECT id, 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_channel FROM us_order inner join (select id from us_order where ( source_from != 20 OR source_from IS NULL ) AND out_channel = 0 ORDER BY id DESC LIMIT 1000000,10) as aa using(id) WHERE ( source_from != 20 OR source_from IS NULL ) AND out_channel = 0
到此,關(guān)于“分析SQL優(yōu)化的limit分頁延遲關(guān)聯(lián)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!