Mysql 的索引有哪些


MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數據的數據結構。MySQL索引常用有:主鍵索引唯一索引普通索引全文索引和組合索引還有一些 單列索引、多列索引的說法.

主鍵索引:

主鍵是一種唯一性索引,但它必須指定為PRIMARY KEY,每個表只能有一個主鍵。

唯一索引:

索引列的所有值都只能出現一次,即必須唯一,值可以為

普通索引:
   基本的索引類型,值可以為空,沒有唯一性的限制。

全文索引:
   全文索引的索引類型為FULLTEXT。全文索引可以在varchar、char、text類型的列上創建。可以通過alter tablecreate index命令創建。FULLTEXT 用於搜索很長一篇文章的時候,效果最好。alter table 表名 add FULLTEXT(‘字段名’)

 

組合索引:

指多個字段上創建的索引,只有在查詢條件中使用了創建索引時的第一個字段,索引才會被使用。

 

數據庫查詢是數據庫的最主要功能之一。不管是哪一種方式的索引都是為了,通過給字段添加索引可以提高查詢數據的讀取速度,提高項目的並發能力和抗壓能力。因此數據庫系統的設計會從查詢算法的角度進行優化。最基本的查詢算法當然是順序查找,這種復雜度為O(n)的算法在數據量很大時速度是有很大程度的下降的。

 

 

所以不同的數據庫會采用不同的的索引方法:主要是因為內核引擎的不一致,所以數據庫在數據結構上算法不一樣, 常用的有BTree索引,B+Tree索引,哈希索引,全文索引。MySQL中最常見的兩種存儲引擎分別是MyISAM和InnoDB,FULLTEXT(全文)索引僅可用於MyISAM和InnoDB只有memory(內存)存儲引擎支持哈希索引。

 

BTree 的數據結構,從查閱到的數據,類是於二分法進行查找,采用二分法進行查找是非常節省時間的,如果是數據擴大256倍,用二分法查找也只會是原來時間的8倍.

 

B+Tree索引是BTree 的變種,在B+Tree結構都在經典BTree的基礎上,增加了順序訪問指針指向相鄰的葉子。因為B+Tree在空間上的處理會比BTree更優化,所以B+Tree更適合實現外部存儲索引結構

 

全文索引

在大量的文本數據中去尋找少量的幾個數據,會大大的增加響應時間,所以如果生成全文索引,生成文本單詞清單,就快速很多。

 

哈希索引

哈希索引用索引列的值計算該值的hashCode,然后在hashCode相應的位置查找該值所在行數據的物理位置,使用散列算法,因此訪問速度非常

 

但是有一點要注意的是,數據庫的索引是為了增加數據庫查詢的速度。但是也增加創建和維護時間,減慢寫入速度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM