SQL Server數(shù)據(jù)庫(kù)索引的正確選擇方案描述
以下的文章主要向大家描述的是SQL Server數(shù)據(jù)庫(kù)索引的正確選擇(Index Selection)方案,在實(shí)際操作中當(dāng)決定在表中創(chuàng)建哪些SQL Server數(shù)據(jù)庫(kù)索引時(shí),我們要對(duì)應(yīng)用中查詢進(jìn)行仔細(xì)分析。具體包括,檢查查詢子句中包括了哪些列。
了解數(shù)據(jù)的分布情況來決定索引的用途;對(duì)執(zhí)行的查詢按照重要性和頻繁性進(jìn)行排序。你須注意的是,在創(chuàng)建SQL Server數(shù)據(jù)庫(kù)索引時(shí),不要為了考慮單個(gè)的查詢而忽略了該表上的其他查詢(顧此失彼)。你應(yīng)該提出一組索引服務(wù)于你的表中最有代表性的查詢。
引用
建議:
SQL Profiler是一個(gè)用來幫助你來識(shí)別頻繁執(zhí)行和關(guān)鍵的查詢的有用的工具。我發(fā)現(xiàn),當(dāng)你著手處理一個(gè)新客戶的網(wǎng)站或識(shí)別需要調(diào)優(yōu)的應(yīng)用中有問題查詢時(shí),SQL Profiler簡(jiǎn)直是一個(gè)無價(jià)之寶。SQL Profiler允許你跟蹤SQL Server中正在執(zhí)行的進(jìn)程和查詢,也可以捕捉 runtime, reads and writes, execution plans,和其他進(jìn)程信息。
這些信息能幫助你識(shí)別哪些查詢的性能低下,哪些查詢經(jīng)常執(zhí)行,哪些索引經(jīng)常被查詢用到等等。
你能手工來分析這些信息,也可以保存下來,用SQL Server數(shù)據(jù)庫(kù)索引調(diào)優(yōu)向?qū)В↖ndex Tuning Wizard)進(jìn)行分析。
因?yàn)椴豢赡転樗械牧卸紕?chuàng)建索引,所以,索引首先要滿足你的應(yīng)用中最關(guān)鍵或者是被很多用戶頻繁執(zhí)行的查詢。如果你有一個(gè)查詢每月只運(yùn)行一次,值得創(chuàng)建一個(gè)索引來支持該查詢嗎?并且在該月的其他時(shí)間還需要進(jìn)行維護(hù)它。該月中,系統(tǒng)在此索引上花費(fèi)的時(shí)間毫無疑問超過了滿足該查詢的表掃描花費(fèi)時(shí)間。
如果,因?yàn)樘幚淼男枰?,你必須在該查詢運(yùn)行時(shí)需要索引,可以考慮在運(yùn)行查詢時(shí)創(chuàng)建一個(gè)SQL Server數(shù)據(jù)庫(kù)索引,而在運(yùn)行結(jié)束之后刪除該索引。只要?jiǎng)?chuàng)建索引的時(shí)間加上有索引的查詢執(zhí)行時(shí)間不超過無索引查詢執(zhí)行的時(shí)間,那么這也是一種可行的方法。
以上的相關(guān)內(nèi)容就是對(duì)SQL Server數(shù)據(jù)庫(kù)索引的選擇(Index Selection)的介紹,望你能有所收獲。
【編輯推薦】