簡介
每天,在不同的Microsoft SQL Server討論版上,同樣的問題出現(xiàn)一次又一次:
- 為什么這次查詢運行慢了?
- 我的索引用到了么?
- 為什么我的索引沒有被用到?
- 為什么這個查詢比那次查詢快?
- 等等等等
正確的回答在各種情況可能不一樣,但是為了回答,你必須每次都問一個同樣的問題:你看了執(zhí)行計劃(Execution
Plan)了么?
執(zhí)行計劃顯示了SQL
Server背后做了什么。他可以給你提供大量的信息關(guān)于你的查詢是如何被SQL
Server執(zhí)行的,包括
- 哪些索引被用到了,以及哪里完全沒有索引
- 數(shù)據(jù)是如何從表中檢索和連接的
- GROUP
BY查詢中數(shù)據(jù)是怎么聚集的
- 所有這些操作對系統(tǒng)造成的預(yù)期壓力(anticipated
load),和估計成本,等等
所有這些信息使得執(zhí)行計劃變成你的工具箱中一個相當重要的工具,無論你是數(shù)據(jù)庫管理員,數(shù)據(jù)庫開發(fā)人員,報告編寫人員,開發(fā)人員,還是任何寫TSQL來訪問SQL Server的人。
給定這個工具以及工具的重要性,你可能認為有大量的信息關(guān)于這個主題。不錯,很多不同的地方的確有一些很好的信息,然而,沒有一個地方集中了如何使用和翻譯執(zhí)行計劃的實踐。
這本書就是這個地方。我的目標是盡可能地把各種關(guān)于執(zhí)行計劃的有用信息放在一個地方,并且提供清晰的路由指向主題,從捕捉計劃的基本開始,通過翻譯,然后如何使用他們理解如何優(yōu)化你的查詢,提高你的索引策略等等。
特別的,我覆蓋了
·
如何捕獲圖形執(zhí)行計劃,以及文本執(zhí)行計劃,和XML執(zhí)行計劃
·
一個文檔化的方法關(guān)于如何翻譯執(zhí)行計劃,因此你可以從你自己的代碼里創(chuàng)建計劃而且使之適用于你自己的環(huán)境
·
SQL Server如何在執(zhí)行計劃里表示和翻譯通用的SQL
Server對象-索引,試圖,派生表等等
·
如何定位通用的性能問題,比如書簽查找或未使用的、遺失的索引
·
如何通過提示、執(zhí)行向?qū)У鹊葋砜刂茍?zhí)行計劃,以及為什么這是雙刃劍
·
XML代碼是如何出現(xiàn)在執(zhí)行計劃里的
·
高級主題,比如并發(fā)、強制參數(shù)化以及強制計劃
在講述的過程之中,我還解決了這些主題:SQL Server內(nèi)部機制,性能調(diào)優(yōu),索引優(yōu)化等等。然后,我的關(guān)注點始終在執(zhí)行計劃的細節(jié)上,以及這些問題是如何在計劃中表示的。如果你在找一些信息關(guān)于如何優(yōu)化SQL,或者建立有效的索引,那么你需要找一本關(guān)注這些主題的書。但是,如果你想要理解這些問題在一個執(zhí)行計劃中如何表現(xiàn)了,本書就是這個地方了。
posted on 2009-04-14 22:43
Justin Chen 閱讀(2292)
評論(0) 編輯 收藏 所屬分類:
SQL Server