您現在的位置是:首頁 >學無止境 >數據庫索引網站首頁學無止境
數據庫索引
索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。
1.FULLTEXT 全文索引
全文索引,僅MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不過目前只有 CHAR、VARCHAR ,TEXT 列上可以創建全文索引。
2.HASH 哈希索引
HASH索引的唯一性及類似鍵值對的形式十分適合作為索引,HASH索引可以一次定位,不需要像樹形索引那樣逐層參照,因此具有極高的效率。但是這種高效是有條件的。即只在“=”和“in”條件下高效,對于范圍查詢,排序及組合索引仍然效率不高。
3.BTREE 樹形索引
BTREE所以是一種將索引按一定算法,存入一個樹形的數據結構中(二叉樹),每次查詢都是從樹的入口root開始,一次遍歷node,獲取leaf。這是MySQL中默認也是最常用的索引類型。
4.RTREE
RTREE在MySQL中很少使用,僅支持geometry數據類型,支持該存儲引擎只有MyISAM、BDb、InnoDb、NDb、Archive幾種。相對于BTREE,RTREE的優勢在于范圍查找。
普通索引:僅加速查詢
唯一索引:加速查詢+列值唯一(可以有null)
主鍵索引:加速查詢+列值唯一(不可以有null)+表中只有一個
組合索引:多列值組成一個索引,專門用于組合搜索,其效率大于索引合并
全文索引:對文本內容進行分詞,進行搜索
外鍵索引:與主鍵索引形成聯系,保證數據的完整性。
1.符合索引遵循前綴原則
2.like查詢%不能再前,否則索引失效。如有需要,使用全文索引
3.column is null可以使用索引
4.如果MySQL估計使用索引比全表掃描慢,則放棄使用索引
5.如果or前的條件中列有索引,后面的沒有,索引不會生效。
6.列類型是字符串,查詢時,一定要給值加引號,否則索引失效。
7.確定order by 和 group by 中只有一個表的列,這樣才能使用索引