SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹

SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹

ID:36470688

大小:719.50 KB

頁(yè)數(shù):20頁(yè)

時(shí)間:2019-05-11

SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹_第1頁(yè)
SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹_第2頁(yè)
SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹_第3頁(yè)
SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹_第4頁(yè)
SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹_第5頁(yè)
資源描述:

《SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、SQLServer和Oracle數(shù)據(jù)庫(kù)索引介紹1SQLServer中的索引  索引是與表或視圖關(guān)聯(lián)的磁盤(pán)上結(jié)構(gòu),可以加快從表或視圖中檢索行的速度。索引包含由表或視圖中的一列或多列生成的鍵。這些鍵存儲(chǔ)在一個(gè)結(jié)構(gòu)(B樹(shù))中,使SQLServer可以快速有效地查找與鍵值關(guān)聯(lián)的行?! ”砘蛞晥D可以包含以下類(lèi)型的索引:  聚集索引  聚集索引根據(jù)數(shù)據(jù)行的鍵值在表或視圖中排序和存儲(chǔ)這些數(shù)據(jù)行。索引定義中包含聚集索引列。每個(gè)表只能有一個(gè)聚集索引,因?yàn)閿?shù)據(jù)行本身只能按一個(gè)順序排序?! ≈挥挟?dāng)表包含聚集索引時(shí),表中的數(shù)據(jù)行才按排序順序存儲(chǔ)。如果表具有聚集索引,則該表

2、稱(chēng)為聚集表。如果表沒(méi)有聚集索引,則其數(shù)據(jù)行存儲(chǔ)在一個(gè)稱(chēng)為堆的無(wú)序結(jié)構(gòu)中?! ∶總€(gè)表幾乎都對(duì)列定義聚集索引來(lái)實(shí)現(xiàn)下列功能:  1、可用于經(jīng)常使用的查詢(xún)?! ?、提供高度唯一性?! ≡趧?chuàng)建聚集索引之前,應(yīng)先了解數(shù)據(jù)是如何被訪問(wèn)的??紤]對(duì)具有以下特點(diǎn)的查詢(xún)使用聚集索引:  使用運(yùn)算符(如BETWEEN、>、>=、<和<=)返回一系列值?! ∈褂镁奂饕业桨谝粋€(gè)值的行后,便可以確保包含后續(xù)索引值的行物理相鄰。例如,如果某個(gè)查詢(xún)?cè)谝幌盗胁少?gòu)訂單號(hào)間檢索記錄,PurchaseOrderNumber列的聚集索引可快速定位包含起始采購(gòu)訂單號(hào)的行,然后檢索表中

3、所有連續(xù)的行,直到檢索到最后的采購(gòu)訂單號(hào)。  返回大型結(jié)果集?! ∈褂肑OIN子句;一般情況下,使用該子句的是外鍵列?! ∈褂肙RDERBY或GROUPBY子句?! ≡贠RDERBY或GROUPBY子句中指定的列的索引,可以使數(shù)據(jù)庫(kù)引擎不必對(duì)數(shù)據(jù)進(jìn)行排序,因?yàn)檫@些行已經(jīng)排序。這樣可以提高查詢(xún)性能?! 【奂饕贿m用于具有下列屬性的列:  頻繁更改的列  這將導(dǎo)致整行移動(dòng),因?yàn)閿?shù)據(jù)庫(kù)引擎必須按物理順序保留行中的數(shù)據(jù)值。這一點(diǎn)要特別注意,因?yàn)樵诖笕萘渴聞?wù)處理系統(tǒng)中數(shù)據(jù)通常是可變的。  寬鍵寬鍵是若干列或若干大型列的組合。所有非聚集索引將聚集索引中的鍵值

4、用作查找鍵。為同一表定義的任何非聚集索引都將增大許多,這是因?yàn)榉蔷奂饕?xiàng)包含聚集鍵,同時(shí)也包含為此非聚集索引定義的鍵列。 非聚集索引  非聚集索引具有獨(dú)立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引包含非聚集索引鍵值,并且每個(gè)鍵值項(xiàng)都有指向包含該鍵值的數(shù)據(jù)行的指針?! 姆蔷奂饕械乃饕兄赶驍?shù)據(jù)行的指針?lè)Q為行定位器。行定位器的結(jié)構(gòu)取決于數(shù)據(jù)頁(yè)是存儲(chǔ)在堆中還是聚集表中。對(duì)于堆,行定位器是指向行的指針。對(duì)于聚集表,行定位器是聚集索引鍵?! ≡赟QLServer2005中,可以向非聚集索引的葉級(jí)別添加非鍵列以跳過(guò)現(xiàn)有的索引鍵限制(900字節(jié)和16鍵列),并執(zhí)行完整范

5、圍內(nèi)的索引查詢(xún)?! 》蔷奂饕c聚集索引具有相同的B樹(shù)結(jié)構(gòu),它們之間的顯著差別在于以下兩點(diǎn):  1、基礎(chǔ)表的數(shù)據(jù)行不按非聚集鍵的順序排序和存儲(chǔ)?! ?、非聚集索引的葉層是由索引頁(yè)而不是由數(shù)據(jù)頁(yè)組成?! ≡O(shè)計(jì)非聚集索引時(shí)需要注意數(shù)據(jù)庫(kù)的特征:  更新要求較低但包含大量數(shù)據(jù)的數(shù)據(jù)庫(kù)或表可以從許多非聚集索引中獲益從而改善查詢(xún)性能?! Q策支持系統(tǒng)應(yīng)用程序和主要包含只讀數(shù)據(jù)的數(shù)據(jù)庫(kù)可以從許多非聚集索引中獲益。查詢(xún)優(yōu)化器具有更多可供選擇的索引用來(lái)確定最快的訪問(wèn)方法,并且數(shù)據(jù)庫(kù)的低更新特征意味著索引維護(hù)不會(huì)降低性能?! ÷?lián)機(jī)事務(wù)處理應(yīng)用程序和包含大量更新表的數(shù)

6、據(jù)庫(kù)應(yīng)避免使用過(guò)多的索引。此外,索引應(yīng)該是窄的,即列越少越好?! ∫粋€(gè)表如果建有大量索引會(huì)影響INSERT、UPDATE和DELETE語(yǔ)句的性能,因?yàn)樗兴饕急仨氹S表中數(shù)據(jù)的更改進(jìn)行相應(yīng)的調(diào)整?! ∥ㄒ凰饕 ∥ㄒ凰饕_保索引鍵不包含重復(fù)的值,因此,表或視圖中的每一行在某種程度上是唯一的?! 【奂饕头蔷奂饕伎梢允俏ㄒ凰饕! “粤兴饕 ∫环N非聚集索引,它擴(kuò)展后不僅包含鍵列,還包含非鍵列。  索引涵蓋  指查詢(xún)中的SELECT與WHERE子句的所用列同時(shí)也屬于非聚集索引的情況。這樣就可以更快檢索數(shù)據(jù),因?yàn)樗行畔⒍伎梢灾苯觼?lái)自于索引頁(yè)

7、,從而SQLServer可以避免訪問(wèn)數(shù)據(jù)頁(yè)。加上獨(dú)立的索引文件組,可以用最快速度訪問(wèn)數(shù)據(jù)?! ≌?qǐng)看如下表示例:  A.創(chuàng)建簡(jiǎn)單非聚集索引 以下示例為Purchasing.ProductVendor表的VendorID列創(chuàng)建非聚集索引?!??????USE?AdventureWorks;  GO  CREATE?INDEX?IX_ProductVendor_VendorID  ON?Purchasing.ProductVendor?(VendorID);  GO  B.創(chuàng)建簡(jiǎn)單非聚集組合索引  以下示例為Sales.SalesPerson表的Sale

8、sQuota和SalesYTD列創(chuàng)建非聚集組合索引?!??????CREATE?NONCLUSTERED?INDEX?IX

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

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

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