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