mysql不走索引總結

MySQL查詢語句中,總會發現明明已經創建了查詢字段索引,但是卻沒有用到,這是由於在mysql中有些查詢語句是用不到索引的,總結以下,以供你們分享。mysql

  1. like語句,‘%w’不會使用索引,‘w%’會使用索引
  2. 列類型爲字符串類型,查詢時沒有用單引號引發來
  3. 在where查詢語句中使用表達式
  4. 在where查詢語句中對字段進行NULL值判斷
  5. 在where查詢中使用了or關鍵字, myisam表能用到索引, innodb不行;(用UNION替換OR,能夠使用索引)
  6. where中複合索引未按順序查詢的
  7. 若是mysql估計使用全表掃描要比使用索引快,則不使用索引(數據量小時 or 索引數據量大於20%的)

 

查詢某張表中已經創建的索引:sql

show index from tablename.net

查看索引的使用狀況:
show status like ‘Handler_read%';
你們能夠注意:
handler_read_key:這個值越高越好,越高表示使用索引查詢到的次數
handler_read_rnd_next:這個值越高,說明查詢低效索引

相關文章
相關標籤/搜索