什麽是索引:
索引是數據庫存儲引擎用於快速查找到指定數據的壹種數據結構。
可以用新華字典做類比:如果新華字典中對每個字的詳細解釋是數據庫中表的記錄,那麽按部首或拼音等排序的目錄就是索引,使用它可以讓我們快速查找的某壹個字詳細解釋的位置。
在MySQL中,存儲引擎也是用了類似的方法,先在索引中找到對應的值,然後再根據匹配的索引值找到對應表中記錄的位置。
面試中為什麽問索引:
之所以在索引在面試中經常被問到,就是因為:索引是數據庫的良好性能表現的關鍵,也是對查詢能優化最有效的手段。索引能夠輕易地把查詢性能提高幾個數量級。
然而,糟糕的索引也同樣會影響查詢性能,當表中的數據量越來越多的時候,索引對性能的影響就越大。在數據量比較少並且負責比較低的時候,糟糕的索引對性能的影響可能不明顯,但是當數據量逐漸增多的時候,性能會急劇下降。
索引的類型:
不同類型的索引,可以為不同場景提供更好的性能。在MySQL中,索引是在存儲引擎層面實現的,而不是在服務器層面實現的。正如大家所知道,MySQL支持多種類型的存儲引擎。所以,在不同存儲引擎中索引的實現方式並不是壹樣的,也不是所有類型的索引都被所有存儲引擎支持的,即使多個存儲引擎支持同壹種類型的索引,它底層的實現也有可能是不相同的。