MySQL索引失效的情況

  • 查詢的列中的值存在null
    null無法參與到索引建立的樹中
  • 列中的值較少(重復(fù)數(shù)據(jù)較多)
  • 前導(dǎo)模糊搜索
    由于前面是模糊的,無法利用索引
  • 查詢條件中有or(除非每一列都加索引)

MySQL主要提供2種方式的索引:B-Tree索引,Hash索引
B樹索引具有范圍查找和前綴查找的能力,對于有N節(jié)點的B樹,檢索一條記錄的復(fù)雜度為O(LogN)。相當(dāng)于二分查找。
哈希索引只能做等于查找,但是無論多大的Hash表,查找復(fù)雜度都是O(1)。
顯然,如果值的差異性大,并且以等值查找(=、 <、>、in)為主,Hash索引是更高效的選擇,它有O(1)的查找復(fù)雜度。
如果值的差異性相對較差,并且以范圍查找為主,B樹是更好的選擇,它支持范圍查找。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容