亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL limit對效率的影響

MySQL limit對效率的影響

拉風的咖菲貓 2019-04-13 08:36:15
有一張很老的數據表,時間戳格式為varchar,字段如下:idbigintnamevarchar(200)create_timevarchar(200)//索引KEY`IDX_CREATED`(`create_time`),數據約500多萬,現在引出發現的問題,一條sql語句效率非常的低:selectid,namefromtwherecreate_time>1434115807296orderbycreate_timelimit1000;本機測試200s,執行計劃:>explainselectid,namefromtwherecreate_time>1434115807296orderbycreate_timelimit1000;+----+-------------+-------+-------+---------------+---------------+---------+------+------+-------------+|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|+----+-------------+-------+-------+---------------+---------------+---------+------+------+-------------+|1|SIMPLE|User|index|IDX_CREATED|IDX_CREATED|63|NULL|1000|Usingwhere|+----+-------------+-------+-------+---------------+---------------+---------+------+------+-------------+1rowinset(0.00sec)如果去掉limit:selectid,namefromtwherecreate_time>1434115807296orderbycreate_time執行時間5s,執行計劃:>explainselectid,namefromtwherecreate_time>1434115807296orderbycreate_time+----+-------------+-------+------+---------------+------+---------+------+---------+-----------------------------+|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|+----+-------------+-------+------+---------------+------+---------+------+---------+-----------------------------+|1|SIMPLE|User|ALL|IDX_CREATED|NULL|NULL|NULL|4858500|Usingwhere;Usingfilesort|+----+-------------+-------+------+---------------+------+---------+------+---------+-----------------------------+1rowinset(0.00sec)一個index查詢竟然比ALL&filesort查詢慢這么多?請MySQL達人指教
查看完整描述

2 回答

?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

看執行計劃,這兩個差別主要在于是否使用了IDX_CREATED的索引,以及filesort。
前者用上了索引,所以你前面where條件的查詢速度會有很大提高,但是很奇怪沒有用到filesort,所以在后面的orderby階段會消耗了很大的時間。
后者就是直接簡單的查詢,沒有使用索引,并進行了正常的文件排序。
可以考慮強制不使用索引Ignoreindex來優化此句的性能。
建議你用profile跟蹤再詳細看一下每個階段的時間消耗,這樣會更為準確。
                            
查看完整回答
反對 回復 2019-04-13
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

create_timevarchar(200)
改為
create_timeint(11)
你是用laravel框架自動生成的吧?傻!
另外,你這樣對比不公平??!MYSQL分頁慢加速器解決方案MYSQL分頁優化MYSQL分頁解決方案LIMIT優化
                            
查看完整回答
反對 回復 2019-04-13
  • 2 回答
  • 0 關注
  • 340 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號