mysql索引數據結構區別?
全文索引、聚集索引、哈希索引、b+樹索引等 B+樹的簡單定義:B+樹是為磁盤或其他存儲設備設計的一種平衡查找樹。B+樹中所有記錄都是按鍵值大小順序存放在葉子節點上,各葉子節點通過指針進行連接。
哈希索引(Hash indexes)采用哈希表來對鍵值進行查找,時間復雜度為O(1)。
使用哈希索引時對于鍵值的等值查詢是非常快的,但是其他類型的查詢如范圍查詢、模糊查詢、排序等是不能使用哈希索引的。
這是哈希索引使用比較少的主要原因。
聚集索引(Clustered Index)又稱聚簇索引,其葉子節點存放記錄。 每個InnoDB 表有一個特定的索引叫做聚集索引,存儲行的數據。
如果你的表定義了主鍵那么主鍵就是聚集索引,如果沒有定義主鍵,MySQL 會選擇第一個非空唯一索引列作為聚集索引,如果表中也沒有唯一索引,InnoDB會生成一個類似RowId的隱藏的聚集索引。 全文索引查找條件使用 MATCH AGAINST。 全文索引(Full-text search indexes)使用倒排索引(inverted index)實現。
倒排索引會記錄文本中的每個關鍵字出現在文檔中的位置。