SQL 基礎知識梳理(七) 索引

2022-01-11 20:34:42 字數 2580 閱讀 2622

索引的概念

在關係型資料庫中,索引是對資料庫表中一列或多列的值進行排序的一種結構。

sql server中有索引的型別:

按儲存結構區分:「聚集索引(又稱聚類索引,簇集索引)」,「分聚集索引(非聚類索引,非簇集索引)」

按資料唯一性區分:「唯一索引」,「非唯一索引」

按鍵列個數區分:「單列索引」,「多列索引」

聚集索引和非聚集索引的區別

聚集索引:是對磁碟上實際資料重新組織以按指定的一列或多列值排序。乙個表只能建立乙個聚集索引。(比擬新華字典按拼音查詢)

非聚集索引: sqlserver預設情況下建立的索引是非聚集索引,他不重新組織表中的資料,而是對每一行儲存索引列值並用乙個指標指向資料所在的頁面。乙個表可以擁有多個非聚集索引,每個非聚集索引根據索引列的不同提供不同的排序順序。 (比擬新華字典按偏旁查詢)

索引的語法

create  [unique]  [clustered|nonclustered ] 

index index_name on ( column [ asc | desc ] [ ,...n ] ) [with[pad_index][[,]fillfactor=fillfactor]

[[,]ignore_dup_key]

[[,]drop_existing]

[[,]statistics_norecompute]

[[,]sort_in_tempdb]

][ on filegroup ]

索引語法解釋create index命令建立索引各引數說明如下:

unique:用於指定為表或檢視建立唯一索引,即不允許存在索引值相同的兩行。

clustered:用於指定建立的索引為聚集索引。

nonclustered:用於指定建立的索引為非聚集索引。

index_name:用於指定所建立的索引的名稱。

table:用於指定建立索引的表的名稱。

view:用於指定建立索引的檢視的名稱。

asc|desc:用於指定具體某個索引列的公升序或降序排序方向。

column:用於指定被索引的列。

pad_index:用於指定索引中間級中每個頁(節點)上保持開放的空間。

fillfactor = fillfactor:用於指定在建立索引時,每個索引頁的資料佔索引頁大小的百分比,fillfactor的值為1到100。

ignore_dup_key:用於控制當往包含於乙個唯一聚集索引中的列中插入重複資料時sql server所作的反應。

drop_existing:用於指定應刪除並重新建立已命名的先前存在的聚集索引或者非聚集索引。

statistics_norecompute:用於指定過期的索引統計不會自動重新計算。

sort_in_tempdb:用於指定建立索引時的中間排序結果將儲存在 tempdb 資料庫中。

on filegroup:用於指定存放索引的檔案組。

索引設計原則

管理索引

exec sp_helpindex bigdata --檢視索引定義 

exec sp_rename

'bigdata.idx_mobiel

','idx_big_mobiel

' --將索引名由'

idx_mobiel

' 改為'

idx_big_mobiel『

drop index bigdata.idx_big_mobiel --刪除bigdata表中的idx_big_mobiel索引

dbcc showcontig(bigdata,idx_mobiel) --檢查bigdata表中索引idx_mobiel的碎片資訊

dbcc indexdefrag(test,bigdata,idx_mobiel) --整理test資料庫中bigdata表的索引idx_mobiel上的碎片

update statistics bigdata --更新bigdata表中的全部索引的統計資訊

索引的優缺點優點1.大大加快資料的檢索速度;

2.建立唯一性索引,保證資料庫表中每一行資料的唯一性;

3.加速表和表之間的連線;

4.在使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間。

缺點1.索引需要佔物理空間。

2.當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度

使用索引時的注意事項:

避免對索引字段進行計算操作

避免在索引欄位上使用not,<>,!=

避免在索引列上使用is null和is not null

避免在索引列上出現資料型別轉換

避免在索引欄位上使用函式

避免建立索引的列中使用空值。

C 基礎知識梳理索引

一 引子 之前曾寫了一篇隨筆 net平台技術體系梳理 初學者學習路徑推薦 我們的願景與目標 二 c 基礎知識梳理索引 高效掌握c 第一回 c 中的基本資料型別及其相互轉換 高效掌握c 第二回 c 陣列 高效掌握c 第三回 字串常用操作 高效掌握c 第四回 字串補充知識之 的妙用 高效掌握c 第五回 ...

C 基礎知識梳理系列索引

摘 要 這個系列,將從山腳寫到山腰。由於鄙人知識匱乏,不敢奢望攀登山頂。c target runtime v4.0.30319 系列索引 c 基礎知識梳理系列一 clr及程式集部署 c 基礎知識梳理系列二 c 的演繹大師 型別 c 基礎知識梳理系列三 c 類成員 常量 字段 屬性 c 基礎知識梳理系...

IP基礎知識梳理

離開學校後看書少了很多,發現掌握的ip知識不是很牢,所以在這裡也稍稍梳理下,感覺語言也沒書本上詳盡 完全是筆記形式,望讀者勿噴 ip層 網路層也叫internet層,負責將分組報文從源端傳送到目的端。作用 tcp ip模型 參考 即整個網路上傳送的二進位制資料總結為如下格式 後的鏈路配置為trunk...