[sql-server]索引

[sql-server]索引

ID:37801773

大?。?5.50 KB

頁數(shù):4頁

時間:2019-05-31

[sql-server]索引_第1頁
[sql-server]索引_第2頁
[sql-server]索引_第3頁
[sql-server]索引_第4頁
資源描述:

《[sql-server]索引》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、[sql-server]索引索引問題一概述??可以利用索引快速訪問數(shù)據(jù)庫表中的特定信息。索引是對數(shù)據(jù)庫表中一個或多個列的值進(jìn)行排序的結(jié)構(gòu)。??索引提供指針以指向存儲在表中指定列的數(shù)據(jù)值,然后根據(jù)指定的排序次序排列這些指針。??數(shù)據(jù)庫使用索引的方式與使用書的目錄很相似:通過搜索索引找到特定的值,??然后跟隨指針到達(dá)包含該值的行二索引的兩種類型:聚集索引=簇集索引聚集索引基于數(shù)據(jù)行的鍵值在表內(nèi)排序和存儲這些數(shù)據(jù)行。由于數(shù)據(jù)行按基于聚集索引鍵的排序次序存儲,因此聚集索引對查找行很有效。每個表只能有一個聚集索引,因?yàn)閿?shù)據(jù)行本身只能按一個順序存

2、儲。數(shù)據(jù)行本身構(gòu)成聚集索引的最低級別。只有當(dāng)表包含聚集索引時,表內(nèi)的數(shù)據(jù)行才按排序次序存儲。如果表沒有聚集索引,則其數(shù)據(jù)行按堆集方式存儲。聚集索引對于那些經(jīng)常要搜索范圍值的列特別有效。使用聚集索引找到包含第一個值的行后,便可以確保包含后續(xù)索引值的行在物理相鄰。例如,如果應(yīng)用程序執(zhí)行的一個查詢經(jīng)常檢索某一日期范圍內(nèi)的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然后檢索表中所有相鄰的行,直到到達(dá)結(jié)束日期。這樣有助于提高此類查詢的性能。同樣,如果對從表中檢索的數(shù)據(jù)進(jìn)行排序時經(jīng)常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每

3、次查詢該列時都進(jìn)行排序,從而節(jié)省成本非聚集索引非聚集索引具有完全獨(dú)立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引的最低行包含非聚集索引的鍵值,并且每個鍵值項(xiàng)都有指針指向包含該鍵值的數(shù)據(jù)行。數(shù)據(jù)行不按基于非聚集鍵的次序存儲。在非聚集索引內(nèi),從索引行指向數(shù)據(jù)行的指針稱為行定位器。行定位器的結(jié)構(gòu)取決于數(shù)據(jù)頁的存儲方式是堆集還是聚集。對于堆集,行定位器是指向行的指針。對于有聚集索引的表,行定位器是聚集索引鍵。只有在表上創(chuàng)建了聚集索引時,表內(nèi)的行才按特定的順序存儲。這些行就基于聚集索引鍵按順序存儲。如果一個表只有非聚集索引,它的數(shù)據(jù)行將按無序的堆集方式存儲非聚集

4、索引可以建多個,兩者都能改善查詢性能非聚集索引與聚集索引一樣有B樹結(jié)構(gòu),但是有兩個重大差別:數(shù)據(jù)行不按非聚集索引鍵的順序排序和存儲。非聚集索引的葉層不包含數(shù)據(jù)頁。相反,葉節(jié)點(diǎn)包含索引行。每個索引行包含非聚集鍵值以及一個或多個行定位器,這些行定位器指向有該鍵值的數(shù)據(jù)行(如果索引不唯一,則可能是多行)。非聚集索引可以在有聚集索引的表、堆集或索引視圖上定義另外唯一索引:唯一索引可以確保索引列不包含重復(fù)的值。在多列唯一索引的情況下,該索引可以確保索引列中每個值組合都是唯一的。唯一索引既是索引也是約束。復(fù)合索引:索引項(xiàng)是多個的就叫組合索引,也叫

5、復(fù)合索引。復(fù)合索引使用時需要注意索引項(xiàng)的次序。二索引的創(chuàng)建有兩種方法可以在SQLServer內(nèi)定義索引:CREATEINDEX語句和CREATETABLE語句CREATETABLE支持在創(chuàng)建索引時使用下列約束:PRIMARYKEY創(chuàng)建唯一索引來強(qiáng)制執(zhí)行主鍵UNIQUE創(chuàng)建唯一索引CLUSTERED創(chuàng)建聚集索引NONCLUSTERED創(chuàng)建非聚集索引注:1定義索引時,可以指定每列的數(shù)據(jù)是按升序還是降序存儲。如果不指定,則默認(rèn)為升序???2支持在計(jì)算列上創(chuàng)建索引???3為索引指定填充因子?????可標(biāo)識填充因子來指定每個索引頁的填滿程度。索

6、引頁上的空余空間量很重要,?????因?yàn)楫?dāng)索引頁填滿時,系統(tǒng)必須花時間拆分它以便為新行騰出空間。三索引的維護(hù)語句DBCCDBREINDEX???重建指定數(shù)據(jù)庫中表的一個或多個索引DBCCINDEXFRAG  整理指定的表或視圖的聚集索引和輔助索引碎片四查看索引的方法sp_indexes???????返回指定遠(yuǎn)程表的索引信息INDEXKEY_PROPERTY返回有關(guān)索引鍵的信息sysindexes系統(tǒng)表?數(shù)據(jù)庫中的每個索引和表在表中各占一行,該表存儲在每個數(shù)據(jù)庫中五可以通過執(zhí)行計(jì)劃??查看sql語句執(zhí)行時是否建立在索引之上比如CREAT

7、ETABLETest(Field_1intNOTNULL,?Field_2intCONSTRAINTPK_Test?PRIMARYKEYCLUSTERED(Field_1))CREATEindexIX_TestONTest(Field_2)1SELECT*FROMTestWHEREField_2=408?執(zhí)行計(jì)劃可以看出使用了IX_Test索引2SELECT*FROMTestWHEREField_1=1?執(zhí)行計(jì)劃可以看出使用了PK_Test3但如果是SELECT*FROMTestwith(index(IX_Test))WHEREFie

8、ld_1=1?則指定使用索引六索引的具體使用(轉(zhuǎn)貼)1)索引的設(shè)計(jì)A:盡量避免表掃描檢查你的查詢語句的where子句,因?yàn)檫@是優(yōu)化器重要關(guān)注的地方。包含在where里面的每一列(column)都是可能的侯選索引,為能達(dá)到

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。