索引(index)是幫助mysql高效獲取資料的資料結構(有序)。在資料之外,資料 庫系統還維護者滿足特定查詢演算法的資料結構,這些資料結構以某種方式引用(指向)資料, 這樣就可以在這些數 據結構上實現高階查詢演算法,這種資料結構就是索引。對資料庫來說,索引的作用就是給『資料』加目錄。
索引用來排序資料以加快搜尋和排序操作的速度
索引改善檢索操作的效能,但降低了資料插入、修改和刪除的效能;
索引資料可能要占用大量的儲存空間;
並非所有的資料都是和索引;
索引用於資料過濾和資料排序
mysql目前主要有以下幾種索引型別:fulltext,hash,btree,rtree。
即為全文索引,目前只有myisam引擎支援。其可以在create table ,alter table ,create index 使用,不過目前只有 char、varchar ,text 列上可以建立全文索引。
全文索引並不是和myisam一起誕生的,它的出現是為了解決where name like 「%word%"這類針對文字的模糊查詢效率較低的問題。
由於hash的唯一(幾乎100%的唯一)及類似鍵值對的形式,很適合作為索引。
hash索引可以一次定位,不需要像樹形索引那樣逐層查詢,因此具有極高的效率。但是,這種高效是有條件的,即只在「=」和「in」條件下高效,對於範圍查詢、排序及組合索引仍然效率不高。
btree索引就是一種將索引值按一定的演算法,存入乙個樹形的資料結構中(二叉樹),每次查詢都是從樹的入口root開始,依次遍歷node,獲取leaf。這是mysql裡預設和最常用的索引型別。
rtree在mysql很少使用,僅支援geometry資料型別,支援該型別的儲存引擎只有myisam、bdb、innodb、ndb、archive幾種。
普通索引:僅加速查詢
唯一索引:加速查詢 + 列值唯一(可以有null)
主鍵索引:加速查詢 + 列值唯一(不可以有null)+ 表中只有乙個
組合索引:多列值組成乙個索引,專門用於組合搜尋,其效率大於索引合併
全文索引:對文字的內容進行分詞,進行搜尋
直接建立
create
index 索引名字
on 表名(列名)
;
修改表結構建立索引alter
table 表名 add
index 索引名(列名)
;
建立表時直接指定索引create
table 表名 (
id int
notnull
,列名 varchar(16
)not
null
,index 索引名 (列名)
);
刪除索引drop
index 索引名 on 表名;
--修改表結構刪除索引
alter
table 表名 drop
index 索引名;
資料庫 資料庫索引
索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...
資料庫mysql索引 資料庫 mysql索引
mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...
資料庫索引
索引 索引列唯一索引 主鍵索引 聚簇索引和非聚簇索引 如何建立索引 如何刪除索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資...