1. 程式人生 > >mysql索引類型和索引方法

mysql索引類型和索引方法

重復 如果 得到 但是 保存數據 ng- 決定 點距 數據庫

索引類型

mysql索引類型normal,unique,full text的區別是什麽?

normal:表示普通索引

unique:表示唯一的,不允許重復的索引,如果該字段信息保證不會重復例如身份證號用作索引時,可設置為unique

full textl: 表示 全文搜索的索引。 FULLTEXT 用於搜索很長一篇文章的時候,效果最好。用在比較短的文本,如果就一兩行字的,普通的 INDEX 也可以。

總結,索引的類別由建立索引的字段內容特性來決定,通常normal最常見。

MySQL目前主要有以下幾種索引方法:B-Tree,Hash,R-Tree。

索引方法

一、B-Tree

B-Tree是最常見的索引類型,所有值(被索引的列)都是排過序的,每個葉節點到跟節點距離相等。所以B-Tree適合用來查找某一範圍內的數據,而且可以直接支持數據排序(ORDER BY)
B-Tree在MyISAM裏的形式和Innodb稍有不同:
MyISAM表數據文件和索引文件是分離的,索引文件僅保存數據記錄的磁盤地址
InnoDB表數據文件本身就是主索引,葉節點data域保存了完整的數據記錄

二、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索引

三、R-Tree索引

R-Tree在MySQL很少使用,僅支持geometry數據類型,支持該類型的存儲引擎只有MyISAM、BDb、InnoDb、NDb、Archive幾種。

轉載自:https://www.cnblogs.com/zuochuang/p/8184349.html

mysql索引類型和索引方法