一、索引型別
mysql索引型別normal,unique,full text的區別是什麼?
normal:表示普通索引
unique:表示唯一的,不允許重複的索引,如果該欄位資訊保證不會重複例如身份證號用作索引時,可設定為unique
full text:表示 全文搜尋的索引。 fulltext 用於搜尋很長一篇文章的時候,效果最好。用在比較短的文字,如果就一兩行字的,普通的 index 也可以。
總結,索引的類別由建立索引的字段內容特性來決定,通常normal最常見。
mysql目前主要有以下幾種索引方法:b-tree,hash,r-tree。
二、索引方法
1、b-tree
b-tree是最常見的索引型別,所有值(被索引的列)都是排過序的,每個葉節點到跟節點距離相等。所以b-tree適合用來查詢某一範圍內的資料,而且可以直接支援資料排序(order by)
b-tree在myisam裡的形式和innodb稍有不同:
myisam表資料檔案和索引檔案是分離的,索引檔案僅儲存資料記錄的磁碟位址
innodb表資料檔案本身就是主索引,葉節點data域儲存了完整的資料記錄
2、hash索引
1).僅支援"=",「in"和」<=>"精確查詢,不能使用範圍查詢:
由於hash索引比較的是進行hash運算之後的hash值,所以它只能用於等值的過濾,不能用於基於範圍的過濾,因為經過相應的hash演算法處理之後的hash
2).不支援排序:
由於hash索引中存放的是經過hash計算之後的hash值,而且hash值的大小關係並不一定和hash運算前的鍵值完全一樣,所以資料庫無法利用索引的資料來避免任何排序運算
3).在任何時候都不能避免表掃瞄:
由於hash索引比較的是進行hash運算之後的hash值,所以即使取滿足某個hash鍵值的資料的記錄條數,也無法從hash索引中直接完成查詢,還是要通過訪問表中的實際資料進行相應的比較,並得到相應的結果
4).檢索效率高,索引的檢索可以一次定位,不像b-tree索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的io訪問,所以hash索引的查詢效率要遠高於b-tree索引
5).只有memory引擎支援顯式的hash索引,但是它的hash是nonunique的,衝突太多時也會影響查詢效能。memory引擎預設的索引型別即是hash索引,雖然它也支援b-tree索引
3、r-tree索引
r-tree在mysql很少使用,僅支援geometry資料型別,支援該型別的儲存引擎只有myisam、bdb、innodb、ndb、archive幾種。
三、索引的使用及注意事項
使用索引時,有一些技巧:
mysql 索引型別 索引方法
在資料庫表中,對欄位建立索引可以大大提高查詢速度。通過善用這些索引,可以令mysql的查詢和執行更加高效 2索引方法 為了使索引的使用效率更高,在建立索引時,必須考慮在哪些欄位上建立索引和建立什麼型別的索引,有7大原則 1 選擇唯一性索引 2 為經常需要排序 分組和聯合操作的字段建立索引 3 為常作...
MySQL索引 索引型別
在mysql有兩種索引型別 hash b 樹 hash索引原理比較簡單就是利用了乙個hash表 說b 樹之前先要了解b 樹的資料結構。不廢話,先上圖。對b 樹做一些解釋,參考上圖。b 樹的資料都在葉子節點上 非葉子節點上的這些都是範圍。舉例 最上面的根節點上的資料是5,28,65代表的是它的三個子樹...
mysql索引型別和方式 mysql索引型別和方式
索引 資料庫的索引就像一本書的目錄,能夠加快資料庫的查詢速度。mysql索引有四種primary index unique fulltext,其中primary index unique是一類,fulltext是一類。這四種都是單列索引,也就是他們都是作用於單個一列,所以也稱單列索引 但是所以乙個索...