SQL Server之索引
簡單來說,索引就是一個指針,指向表里的數(shù)據(jù)。
創(chuàng)建索引
create indext index_name on table_name
刪除索引
drop index index_name on table_name
索引的類型
單字段索引
create indext index_name on table_name(column_name)
如果某個字段單獨在Where子句作為單獨的查詢條件,它的單字段索引是最有效的。
唯一索引
create unique indext index_name on table_name(column_name)
唯一索引不允許表里有重復(fù)值,且column_name不能是主鍵。
組合索引
create indext index_name on table_name(column1,column2)
組合索引是基于一個表里兩個或多個字段的索引
隱含索引
是數(shù)據(jù)庫服務(wù)程序在創(chuàng)建對象時自動創(chuàng)建的。比如,數(shù)據(jù)庫會給主鍵約束和唯一性約束自動創(chuàng)建索引。
為什么給這些約束自動創(chuàng)建索引?
從一個數(shù)據(jù)庫服務(wù)程序的角度來看,當(dāng)管理員向數(shù)據(jù)庫添加一列新信息時,主鍵是唯一的。為了有效地檢查新值在數(shù)以千計的
記錄里是唯一的,表里的主鍵列必須被索引。因此,在創(chuàng)建主鍵或唯一性約束時,數(shù)據(jù)庫會自動給他們創(chuàng)建索引。
聚集索引和非聚集索引
根據(jù)索引的順序與數(shù)據(jù)表的物理順序是否相同,可以把索引非為聚集索引和非聚集索引。
例如:字典的目錄就是一種索引,因為通過目錄我們可以很快的定位到要檢索的內(nèi)容,而不是從頭到尾把字典翻一遍。漢語字典
一般都提供兩種目錄,一種是拼音目錄,另一種是偏旁部首目錄。漢語字典是按照拼音的順序排列的,因此拼音目錄就是聚集索引,
而偏旁部首目錄是非聚集索引,
每一個表都只有一個聚集索引,因為表中數(shù)據(jù)的物理順序只有一個,而非聚集索引則可以創(chuàng)建多個。
索引的小知識
索引是數(shù)據(jù)庫調(diào)優(yōu)的最根本的方法,很多優(yōu)化手法都是圍繞索引展開的,可以說索引是一切優(yōu)化手法的“內(nèi)功”,而所有的優(yōu)化
手法都是由索引衍化出來的招式而已。
但是由于索引需要占據(jù)一定的存儲空間,而且索引也會降低數(shù)據(jù)插入、刪除和更新的速度,所以應(yīng)該只創(chuàng)建必要的索引,一般是
在檢索的時候用的字段中創(chuàng)建索引。
索引還會造成存儲碎片的問題。當(dāng)刪除一條記錄時,將會導(dǎo)致對應(yīng)的索引中的該記錄的對應(yīng)項為空,由于索引是采用B樹結(jié)構(gòu)存儲,
所以對應(yīng)的索引項不會被刪除,經(jīng)過一段時間的增刪改操作后,數(shù)據(jù)庫中就會出現(xiàn)大量的存儲碎片,這些存儲碎片不僅占用了存儲
空間,而且降低了數(shù)據(jù)庫運行的速度。那么怎么處理這些存儲碎片呢?最方便的手段就是重建索引,重建索引會將先前創(chuàng)建的索引
刪除然后重新創(chuàng)建索引,主流數(shù)據(jù)庫管理系統(tǒng)都提供了重建索引的功能,比如reindex,rebuild等,如果沒有提供重建索引功能,可以
首先用drop index語句刪除索引,然后用alter table語句重新創(chuàng)建索引。
轉(zhuǎn)載于:https://www.cnblogs.com/jiajiayuan/archive/2011/07/12/2104418.html
總結(jié)
以上是生活随笔為你收集整理的SQL Server之索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 孕妇梦到滑坡是什么意思
- 下一篇: 梦到有白头发了怎么回事儿啊