1、什麼是索引?
什麼是索引呢?索引就像是一本書的目錄一樣,當我們想要查詢一本書中與某個特定主題相關的所有頁面的時候,我們會先去查詢目錄(索引),它按照字母表順序列出了所有主題,然後從索引中就可以找到一頁或多頁與該主題相關的頁面,簡單來說,索引就是指向表中資料的指標
索引頁是資料庫中儲存索引的資料頁,索引頁存放檢索資料行的關鍵字頁及資料行的位址指標,索引頁類似於漢語字典中按拼音或筆畫排序的目錄頁
索引能夠提高 select 查詢和 where 子句的速度,但是卻降低了包含 update 語句或 insert 語句的資料輸入過程的速度;索引的建立與刪除不會對錶中的資料產生影響
建立索引需要使用 create index 語句,該語句允許對索引命名,指定要建立索引的表以及對哪些列進行索引,還可以指定索引按照公升序或者降序排列
同 unique 約束一樣,索引可以是唯一的;這種情況下,索引會阻止列中(或者列的組合,其中某些列有索引)出現重複的條目
2、索引的分類
唯一索引:建立唯一約束會自動建立唯一索引。 它對應的列中僅允許有乙個null值
主鍵索引:是唯一索引的一種特殊型別。建立主鍵會自動建立主鍵索引。 要求主鍵中的每個值是非空,唯一的
聚集索引:表中各行的物理順序與鍵值的邏輯順序相同
非聚集索引:表中各行資料存放的物理順序與鍵值的邏輯順序不匹配。聚集索引比非聚集索引有更快的資料訪問速度
復合索引:將多個列組合作為索引
全文索引:是一種特殊型別的寄語標記的功能型索引,由sql server 中全文引擎服務建立和維護
隱式索引:隱式索引由資料庫伺服器在建立某些物件的時候自動生成。例如,對於主鍵約束和唯一約束,資料庫伺服器就會自動建立索引
3、基本語法
主要通過create index命令來建立索引,它的基本語法如下:
create
index index_name on table_name;
單列索引:單列索引基於單一的字段建立,基本語法如下所示:
create
index index_name
on table_name (column_name)
;
唯一索引:唯一索引不止用於提公升查詢效能,還用於保證資料完整性。唯一索引不允許向表中插入任何重複值。基本語法如下所示:
create
unique
index index_name
on table_name (column_name)
;
create
index index_name
on table_name (column1, column2)
;
注意:建立單列索引還是聚簇索引,要看每次查詢中,哪些列在作為過濾條件的 where 子句中最常出現
如果只需要一列,那麼就應當建立單列索引。如果作為過濾條件的 where 子句用到了兩個或者更多的列,那麼聚簇索引就是最好的選擇
刪除索引(drop index)
索引可以用 sql drop 命令刪除。刪除索引時應當特別小心,資料庫的效能可能會因此而降低或者提高,基本語法如下所示:
drop
index index_name;
4、小結
任何事物都是有兩面性的,儘管建立索引的目的是提公升資料庫的效能,但是還是有一些情況應當避免使用索引,下面就來小結一下:
什麼時候建議使用索引?
什麼時候不建議使用索引?
使用索引查詢時應注意的問題
SQL 基礎知識梳理(七) 索引
索引的概念 在關係型資料庫中,索引是對資料庫表中一列或多列的值進行排序的一種結構。sql server中有索引的型別 按儲存結構區分 聚集索引 又稱聚類索引,簇集索引 分聚集索引 非聚類索引,非簇集索引 按資料唯一性區分 唯一索引 非唯一索引 按鍵列個數區分 單列索引 多列索引 聚集索引和非聚集索引...
索引基礎知識
sql server 2005 其他版本 0 共 1 對本文的評價是有幫助 評價此主題 索引是與表或檢視關聯的磁碟上結構,可以加快從表或檢視中檢索行的速度。索引包含由表或檢視中的一列或多列生成的鍵。這些鍵儲存在乙個結構 b 樹 中,使 sql server 可以快速有效地查詢與鍵值關聯的行。表或檢視...
索引基礎知識
1 快速取資料 2 保證資料記錄的唯一性 3 加快表的連線速度 4 在使用order by group by子句進行資料檢索時,利用索引可以減少排序和分組的時間。1 索引需要佔物理空間。2 當對表中的資料進行增加 刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度。其實,索引的本質是乙個查詢...