mysql優化 - 關於mysql查詢時索引失效及掃描行數大於資料總行數的疑問。
淡淡烟草味
淡淡烟草味 2017-06-30 09:52:51
0
1
1297

#資料表使用innodb引擎,updated_at 欄位使用普通索引。

三個問題:

  1. 比較前兩條語句,第二條沒有使用索引,我記得是掃描行數達到一定行數時會放棄使用索引,這個臨界值是多少呢?

  2. 全表掃描是顯示掃描行數是 70341 行,而資料總行數卻只有 57087 行?

  3. select count(*) 使用了索引,但是也掃描了 70341 行,這個語句會產生效能問題嗎?

淡淡烟草味
淡淡烟草味

全部回覆(1)
滿天的星座
  1. CBO優化機制的資料庫中,沒有明確的使用或不適用索引的臨界值,以執行計劃中的COST最小為標準,經驗值是取表總行數小於5%的時候用索引比較合適。

  2. 我理解第二個語句使用的是表的統計數據,如果表最近發生過比較大的變更,統計數據有沒有及時更新,會出現兩者偏差較大的情況。

  3. count(*)使用了索引,說明update_at欄位有NOT NULL的定義,相比較全表掃描,掃描索引的成本會更低一些。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板