出版時(shí)間:2010年9月 出版社:電子工業(yè)出版社 作者:本·甘(ItzikBen-Gan) 頁數(shù):583 譯者:成保棟 李保強(qiáng)
Tag標(biāo)簽:無
前言
我以前短暫地見過幾次Itzik Ben-Gan,久聞他的大名,所以很期待在PASS的一次下午會議中聽他介紹如何在SQL編程中避免使用游標(biāo)。很幸運(yùn),我提早到了那里,隨后會議室里就擠滿了人。Itzik帶來了兩個(gè)SQL編程問題,他用嫻熟的技巧和有趣的方式,將它們輕松玩弄于股掌之間,展示了面向合集的思維是多么優(yōu)雅和高效。聽眾們喜歡這種思維方式,我也一樣,只是我從另一個(gè)角度來看待這些。因?yàn)槲覍QL Server的內(nèi)部機(jī)制已經(jīng)有所了解,所以我能看得出來,Itzik在他的演示中已經(jīng)觸及了SQL Server的神經(jīng),很欣賞他能把SQL Server的一些特性轉(zhuǎn)變成漂亮的解決方案。會后,我問一位聽眾,他的主要收獲是什么,很好奇眾多技術(shù)中的哪些能給他留下深刻印象。這位聽眾打量了我一下,稍微有些吃驚,接著只說了一句話:“這個(gè)人是個(gè)天才!”——總結(jié)得多么好的一句話?! ∮螛?biāo)問題要比它表面看起來的更加基礎(chǔ)。它反映了兩種思維方式的深刻分化,具有巨大的實(shí)際重要性。我們當(dāng)中的大多數(shù)人接受的教育是,在編程時(shí),要把一個(gè)任務(wù)細(xì)分成多個(gè)更小的步驟,按一定的順序執(zhí)行程序,進(jìn)行想要的計(jì)算。但是,如果也按這種思想來處理SQL編程,那么最終只能得到平庸的結(jié)果。不僅寫出來的代碼非常長,難以維護(hù),而且代碼的效率不高、不靈活、不大可能進(jìn)行性能優(yōu)化。有效使用SQL,不是要把原來基于過程的編程技巧也擴(kuò)展到SQL上來,也不僅僅是一套特殊的技巧。寫好SQL,需要我們用一種不同的思維方式來處理問題,這是一種面向聲明和集合的思維方式,而不是面向過程的。這就是兩種思維方式的分化。 如何理解這種聲明式的、面向集合的思維方式,成為一名熟練的SQL程序員?《Microsoft SQL Server 2008技術(shù)內(nèi)幕:T-SQL查詢》這本書把所有需要的要素綜合起來,是對SQL Server開發(fā)社區(qū)的一大突出貢獻(xiàn)。書中關(guān)于數(shù)據(jù)庫范式基礎(chǔ)的章節(jié)可以幫助你理解T-SQL這一語言思想體系的基礎(chǔ),體會它的潛質(zhì)。從T-SQL的基礎(chǔ)操作到最高級的功能特性,這本書詳細(xì)介紹了語言本身的各個(gè)方面,所有內(nèi)容都基于如何解決現(xiàn)實(shí)的問題來進(jìn)行講述。通過很多例子向讀者演示了好的SQL應(yīng)該是什么樣的,其中涉及的一些通用模式,在編寫應(yīng)用程序時(shí)都很有可能用到。
內(nèi)容概要
本書全面深入地介紹了Microsoft SQL Server 2008中高級T-SQL查詢、性能優(yōu)化等方面的內(nèi)容,以及SQLServer 2008新增加的一些特性。主要內(nèi)容包括SQL的基礎(chǔ)理論、查詢優(yōu)化、查詢算法及復(fù)雜度,以及在使用子查詢、表表達(dá)式、排名函數(shù)、數(shù)據(jù)聚合和透視轉(zhuǎn)換、TOP和APPLY、數(shù)據(jù)修改、分區(qū)表、特殊數(shù)據(jù)結(jié)構(gòu)等實(shí)際應(yīng)用時(shí)會遇到的各種高級查詢問題和解決方案。 作為一本講述T-SQL高級查詢的專業(yè)圖書,本書旨在結(jié)合實(shí)踐中的各種常見問題,教讀者如何用SQL作為語言工具來思考問題,揭示基于集合查詢的強(qiáng)大威力。本書內(nèi)容豐富、文字簡潔明快,列舉的實(shí)例具有一定的難度,而且實(shí)用性很強(qiáng),可以把它們作為解決實(shí)際問題的標(biāo)準(zhǔn)模式。閱讀本書,可以充分地理解T-SQL,語言和良好的編程實(shí)踐,學(xué)會如何編寫更加有效而強(qiáng)大的查詢語句。 本書適合有經(jīng)驗(yàn)的程序員和:DBA閱讀,是在SQLServer2008中編寫和優(yōu)化SQL查詢的必備參考圖書。
作者簡介
Itzik Ben-Gan,是Solid Quality Mentors的首席顧問和創(chuàng)始人。99年以來一直是SQL Server方面的Microsoft MvP。Itzik在世界各地從事T-SQL查詢.編程和查詢優(yōu)化相關(guān)的培訓(xùn)和咨詢工作。他為SQL Server Magazine和MSDN撰寫了很多文章,并受邀在許多業(yè)界的專題會議上發(fā)表演講。包括Tech-Ed、DevWeek、PASS和SQL Server Magazine Connections?! ubor Kollar,是微軟公司SQL Server Customer Advisory Team的Group Program Manager。從事世界范圍內(nèi)最具挑戰(zhàn)性的SQL Server開發(fā)。他有超過1 3年SQL Server開發(fā)經(jīng)驗(yàn)?! ejan Sarka,是認(rèn)證講師(MCT)、微軟認(rèn)證I傳家(MCITP)、微軟認(rèn)證數(shù)據(jù)庫管理員(MCDBA)、SQL Server MVP,從事開發(fā)數(shù)據(jù)庫和商業(yè)智能解決方案。他也是Solid Quality Mentors的顧問,出席過Tech. Ed PASS和SQL Server DevCon?! teve Kass,博士,是SQL Server MVP,也是數(shù)學(xué)和計(jì)算機(jī)科學(xué)的教授。他為SQL Server Magazine撰寫文章,并曾在SQL Server Magazine Connections上發(fā)表演講。
書籍目錄
序言致謝前言第1章 邏輯查詢處理第2章 集合論和謂詞邏輯第3章 關(guān)系模型第4章 查詢優(yōu)化第5章 算法和復(fù)雜性第6章 子查詢、表表達(dá)式和排名函數(shù)第7章 聯(lián)接和集合運(yùn)算第8章 數(shù)據(jù)聚合和透視第9章 TOP和APPLY第10章 數(shù)據(jù)修改第11章 查詢分區(qū)表第12章 圖、樹、層次結(jié)構(gòu)和遞歸查詢索引
章節(jié)摘錄
分析執(zhí)行計(jì)劃 執(zhí)行計(jì)劃是優(yōu)化器生成的用于確定如何處理一個(gè)給定查詢的“工作計(jì)劃”。一個(gè)計(jì)劃包含一組運(yùn)算符,通常按照特定的順序來應(yīng)用這些運(yùn)算符。一些運(yùn)算符可以在它們前面的運(yùn)算符還在處理時(shí)被應(yīng)用。一些運(yùn)算符可能應(yīng)用多次。而且,如果優(yōu)化器選擇了并行計(jì)劃(parallel plan),那么計(jì)劃的一些分支還有可能會被并行調(diào)用。在計(jì)劃中,優(yōu)化器負(fù)責(zé)決定查詢以什么順序來訪問表、使用哪些索引和應(yīng)用什么樣的訪問方法、使用哪種聯(lián)接算法等等。實(shí)際上,對于給定的查詢,優(yōu)化器會評估多個(gè)執(zhí)行計(jì)劃,并從生成的多個(gè)計(jì)劃中選擇一個(gè)開銷最低的計(jì)劃。注意,SQL server可能不會為給定的查詢生成所有可能的執(zhí)行計(jì)劃。如果總是要生成所有的執(zhí)行計(jì)劃,那么優(yōu)化過程可能會太長。SQL Serer將根據(jù)一些因素(如查詢所涉及到的表的長度)來計(jì)算優(yōu)化過程的臨界值。一種臨界值是基于時(shí)間的,SQL Server不會在優(yōu)化上花費(fèi)比該時(shí)間臨界值更長的時(shí)間。還有一種臨界值是基于開銷的,也就是說,如果找到一個(gè)開銷比該臨界值更低的計(jì)劃,就認(rèn)為這個(gè)計(jì)劃“足夠好”,這時(shí)就會停止優(yōu)化,并使用該計(jì)劃。 在這兩本書中,會經(jīng)常分析查詢的執(zhí)行計(jì)劃。這一節(jié)和下一節(jié)(“索引優(yōu)化”)將介紹相關(guān)的背景知識,幫助你理解那些涉及分析執(zhí)行計(jì)劃的討論。但本節(jié)的目的不是讓你熟悉所有可能的運(yùn)算符,而是讓你了解分析執(zhí)行計(jì)劃的技巧。在“索引優(yōu)化”一節(jié)中將介紹與索引有關(guān)的運(yùn)算符,在本書的后面還將詳細(xì)解釋其他的運(yùn)算符,例如,與聯(lián)接有關(guān)的運(yùn)算符將在第7章“聯(lián)接和集合運(yùn)算”中介紹。圖形化的執(zhí)行計(jì)劃 這兩本書廣泛使用了圖形化的執(zhí)行計(jì)劃。在SSMS中既可以得到估計(jì)的執(zhí)行計(jì)劃(按Ctrl+L鍵),也可以在生成查詢輸出的同時(shí)得到實(shí)際的執(zhí)行計(jì)劃(按Ctrl+M鍵)。不過,這兩種計(jì)劃通常都是一樣的,記住,執(zhí)行計(jì)劃是在查詢執(zhí)行之前生成的。然而,當(dāng)請求估計(jì)的計(jì)劃時(shí),查詢根本不會運(yùn)行。很明顯,有些測量數(shù)據(jù)只在運(yùn)行時(shí)才能收集(例如,每個(gè)運(yùn)算符返回的實(shí)際行數(shù),以及運(yùn)算符的實(shí)際執(zhí)行次數(shù))。在估計(jì)的計(jì)劃中,可以看到一些估計(jì)的測量值,這些值只有在運(yùn)行時(shí)才能收集到真實(shí)的數(shù)據(jù),而實(shí)際的計(jì)劃則會顯示實(shí)際的數(shù)據(jù)和一些相同的估計(jì)值?! ?/pre>編輯推薦
精通T-SQL高級查詢和性能優(yōu)化的幕后機(jī)制,編寫更快,更具伸縮性的代碼。作者團(tuán)隊(duì)用精深而富有洞察力的T-SQL知識幫助開發(fā)人員解決最棘手的基于集合的查詢和性能優(yōu)化問題,加深開發(fā)人員對T-SQL體系結(jié)構(gòu)和內(nèi)部處理細(xì)節(jié)的理解。通過各種實(shí)用方法和高級技術(shù)提高代碼質(zhì)量。 你將學(xué)到: 從面向過程的編程到基于集合的語言及思維邏輯的轉(zhuǎn)變;使用自頂向下的方法論優(yōu)化查詢;根據(jù)算法復(fù)雜度預(yù)測性能;比較各種數(shù)據(jù)聚合技術(shù),包括新的分組集;管理數(shù)據(jù)操作(插入、刪除、更新和合并),提高性能;針對分區(qū)表編寫更有效的查詢;處理圖、樹和層次結(jié)構(gòu),以及遞歸查詢;通過純邏輯難題來磨練解決問題的能力。圖書封面
圖書標(biāo)簽Tags
無評論、評分、閱讀與下載
- 還沒讀過(74)
- 勉強(qiáng)可看(541)
- 一般般(924)
- 內(nèi)容豐富(3832)
- 強(qiáng)力推薦(314)
Microsoft SQL Server 2008技術(shù)內(nèi)幕:T-SQL查詢 PDF格式下載