—— 在資料庫表中,對欄位建立索引可以大大提高查詢速度。通過善用這些索引,可以令mysql的查詢和執行更加高效
2索引方法
為了使索引的使用效率更高,在建立索引時,必須考慮在哪些欄位上建立索引和建立什麼型別的索引,有7大原則:
1.選擇唯一性索引
2.為經常需要排序、分組和聯合操作的字段建立索引
3.為常作為查詢條件的字段建立索引
4.限制索引的數目
5.盡量使用資料量少的索引
6.盡量使用字首來索引
7.刪除不再使用或者很少使用的索引
表示普通索引
表示唯一的,不允許重複的索引,如果該欄位資訊保證不會重複例如身份證號用作索引時,可設定為unique
表示 全文搜尋的索引。 fulltext 用於搜尋很長一篇文章的時候,效果最好。用在比較短的文字,如果就一兩行字的,普通的 index 也可以。
空間索引
空間索引是對空間資料型別的字段建立的索引,mysql中的空間資料型別有4種,分別是geometry、point、linestring、polygon。mysql使用spatial關鍵字進行擴充套件,使得能夠用於建立正規索引型別的語法建立空間索引。建立空間索引的列,必須將其宣告為not null,空間索引只能在儲存引擎為myisam的表中建立
索引可以是單列索引,也可以是多列索引。
(1)單列索引就是常用的乙個列字段的索引,常見的索引。
(2)多列索引就是含有多個列字段的索引
alter table student add index sy(name,age,score);
索引sy就為多列索引,多列索引在以下幾中情況下才能有效:
select * from student where name=『jia』 and age>=『12』 //where條件中含有索引的首列欄位和
第二個字段
select * from user where name=『jia』 //where條件中只含有首列字段
select * from user where name=『jia』 and score<60//where條件中含有首列欄位和第三個字
段多列索引只有在where條件中含有索引中的首列欄位時才有效
總結,索引的類別由建立索引的字段內容特性來決定,通常normal最常見
mysql目前主要有以下幾種索引方法:b-tree,hash,r-tree。
b-tree是最常見的索引型別,所有值(被索引的列)都是排過序的,每個葉節點到跟節點距離相等。所以b-tree適合用來查詢某一範圍內的資料,而且可以直接支援資料排序(order by)
b-tree在myisam裡的形式和innodb稍有不同:
myisam表資料檔案和索引檔案是分離的,索引檔案僅儲存資料記錄的磁碟位址
innodb表資料檔案本身就是主索引,葉節點data域儲存了完整的資料記錄
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在mysql很少使用,僅支援geometry資料型別,支援該型別的儲存引擎只有myisam、bdb、innodb、ndb、archive幾種。
MySQL索引 索引型別
在mysql有兩種索引型別 hash b 樹 hash索引原理比較簡單就是利用了乙個hash表 說b 樹之前先要了解b 樹的資料結構。不廢話,先上圖。對b 樹做一些解釋,參考上圖。b 樹的資料都在葉子節點上 非葉子節點上的這些都是範圍。舉例 最上面的根節點上的資料是5,28,65代表的是它的三個子樹...
mysql索引型別介紹 mysql索引型別介紹
索引型別介紹 主鍵索引 primary key 要求關鍵字不能重複,也不能為null,同時增加主鍵約束 主鍵索引定義時,不能命名 唯一索引 unique index 要求關鍵字不能重複,同時增加唯一約束 普通索引 index 對關鍵字沒有要求 全文索引 fulltext key 關鍵字的 不是所有欄...
mysql索引型別介紹 mysql索引型別介紹
b 樹是多路平衡查詢樹,相對於平衡二叉樹,對父結點的直接子結點個數,不再僅限於2,可以指定m 自定義 這樣可以在樹的深度不大量增加的前提下,儲存更多的結點。b 樹是通常在檔案系統中使用。特點 a 樹的每個結點最多有m 自定義 子結點 b 若根結點不是葉子結點,則至少有兩個子結點 c 除根結點外的所有...