資料庫索引是將資料庫表中的某一列或幾列以特定的資料結構存起來,比如b-tree,hash等,這樣查詢的時候就可以不用從頭插到尾要o(n),這樣可以縮短到o(log)級別甚至o(1)。
建立索引之後查詢和修改,排序等操作可以省很多時間。
索引是對資料庫表中乙個或多個列(例如,employee 表的姓名 (name) 列)的值進行排序的結構。如果想按特定職員的姓來查詢他或她,則與在表中搜尋所有的行相比,索引有助於更快地獲取資訊。
例如這樣乙個查詢:select * from table1 where id=10000。如果沒有索引,必須遍歷整個表,直到id等於10000的這一行被找到為止;有了索引之後(必須是在id這一列上建立的索引),即可在索引中查詢。由於索引是經過某種演算法優化過的,因而查詢次數要少的多。可見,索引是用來定位的。
資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。索引分為聚簇索引和非聚簇索引兩種,聚簇索引 是按照資料存放的物理位置為順序的,就像書中的目錄,內容是按照頁碼順序排列的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對於單行的檢索很快。
注意乙個表只能有乙個聚集索引,但是可以由多個非聚集索引。
接下來說以下三種不同的索引:
根據資料庫的功能,可以在資料庫設計器中建立三種索引:唯一索引、主鍵索引和聚集索引。
一:唯一索引 唯一索引是不允許其中任何兩行具有相同索引值的索引。不是只能建乙個索引。
當現有資料中存在重複的鍵值時,大多數資料庫不允許將新建立的唯一索引與表一起儲存。資料庫還可能防止新增將在表中建立重複鍵值的新資料。例如,如果在employee表中職員的姓(lname)上建立了唯一索引,則任何兩個員工都不能同姓。
二:主鍵索引
資料庫表經常有一列或多列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。
在資料庫關係圖中為表定義主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特定型別。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對資料的快速訪問。
三:聚集索引
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。乙個表只能包含乙個聚集索引。
如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的資料訪問速度。
索引列可以基於資料庫表中的單列或多列建立索引。多列索引可以區分其中一列可能有相同值的行。
如果經常同時搜尋兩列或多列或按兩列或多列排序時,索引也很有幫助。例如,如果經常在同一查詢中為姓和名兩列設定判據,那麼在這兩列上建立多列索引將很有意義。
接下來說一下在資料庫中建立索引的語法:
(1)可以用create index建立
create [unique | clustered | unclustered ] index 索引名 [索引型別] on 表名(列名(n) [asc|desc ],列名,列名...);
索引名命名最好用tablename_colname1_colname2
索引型別可以指定為btree或者hash等
n代表列中的幾位做索引,可以省空間 asc desc 公升序降序。
(2)可以在alter table 語句建立
alter table 表名 add [unique|fulltext] index 索引名 [using [btree|hash]] (列名);
例如alter table xs add index xs_sm using btree(姓名);
alter table xs add index mark(出生日期,姓名)
(3)可以在create table時建立
create table 表名
刪除索引的方法:
(1)drop index 索引名 on 表名
(2)alter table 表名 drop index 索引名
檢視乙個表的索引:
show index in 表名
資料庫建立索引
建立索引 學生學號建立聚集索引 create unique clustered index ix student id on student studentid 規則 create unique clustered nonclustered index 索引名 on 表名 檢視名 索引列名,asc ...
資料庫建立索引
建立索引 目的 加快查詢速度 create unique cluster index 索引名 on 表名 列名 次序 列名 次序 unique標識唯一索引,cluster表示聚簇索引 索引可以建立在該錶的一列或多列上,各列名之間用逗號隔開,次序表示索引值的排列次序,asc表示公升序 預設 desc表...
資料庫建立索引
建立索引可以大大提高系統的效能 優點 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性 可以大大加快資料的檢索速度,這也是建立索引的最主要的原因 可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間 ...