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