《SQL語言藝術》,電子工業出版社出版圖書。Stephane資深SQL專家Faroult傾力打造,軟體架構設計作者溫昱最新譯作,巧妙借鑑《孫子兵法》的智慧結晶。傳授25年的SQL性能與調校經驗,深入探討9種常見查詢方案及其性能。
基本介紹
內容簡介,編輯推薦,圖書目錄,媒體評論,作者簡介,
內容簡介
本書分為12章,每一章包含許多原則或準則,並通過舉例的方式對原則進行解釋說明。這些例子大多來自於實際案例,對九種SQL經典查詢場景以及其性能影響討論,非常便於實踐,為你的實際工作提出了具體建議。本書適合SQL資料庫開發者、軟體架構師,也適合DBA,尤其是資料庫套用維護人員閱讀。
編輯推薦
“一部SQL力作。對於在其他書中止步於理論的難點,本書提供了實際的經驗技巧,效果卓然。”
——Sean Hull,資深諮詢顧問,Heavyweight百聯網集團
“一本真正‘聰明’的SQL書,注重實踐而非課堂上的理論,解決資料庫專業人員遇到的問題。”
——Anlhony Molinaro,首席資料庫工程師,Wi reless Generation公司
你是否把資料庫套用看作一場戰役?你是否把數據看作一排排需要篩選並打退的敵軍縱隊?SQL專家Stephane Faroult就是這么做的。
《SQL語言藝術》的作者St6phane Faroult借用《孫子兵法》的智慧處理SQL性能方面的問題。開發資料庫套用好比一場戰役,設計即戰略,而每次資料庫訪問就是與敵軍在戰術上的對決。
Stephane對SQL性能問題的論述,視角獨特,一絲不苟。如何才能更好地使用SQL?本書結合一線實踐的案例,強調了:
應從最開始就綜合設計資料庫和套用的性能。“只強調某個最重要方面的設計是錯誤的”。
應避免只考慮單個SQL語句。“關注總的目標,SQL語句再好也挽救不了糟糕的處理流程”。
必須明白為哪些欄位建立索引、為何建立索引。“索引過多是設計不確定的表現”。
Stephane還對你的實際工作提出了具體建議。九種SQL經典查詢方案,以及對其性能影響的討論,非常便於實踐。書中有一章專門討論樹狀結構,可幫助你解決層次結構數據的問題。另外,當你必須基於別人的資料庫設計進行工作時,“精於計謀:挽救回響時間”這一章會助你成功。
圖書目錄
前言
1 制定計畫:為性能而設計
數據的關係視圖
規範化的重要性
有值、無值、空值
限用Boolean型欄位
理解子類型(Subtype)
約束應明確聲明
過於靈活的危險性
歷史數據的難題
設計與性能
處理流程
數據集中化(Centralizing)
系統複雜性
小結
2 發動戰爭:高效訪問資料庫
查詢的識別
保持資料庫連線穩定
戰略優先於戰術
先定義問題,再解決問題
保持資料庫Schema穩定
直接操作實際數據
用SQL處理集合
動作豐富的SQL語句
充分利用每次資料庫訪問
接近DBMS核心
只做必須做的
sQL語句反映業務邏輯
把邏輯放到查詢中
一次完成多個更新
慎用自定義函式
簡潔的SQL
SQL的進攻式編程
精明地使用異常(Exceptions)
3 戰術部署:建立索引
找到“切入點”
索引與目錄
讓索引發揮作用
函式和類型轉換對索引的影響
索引與外鍵
同一欄位,多個索引
系統生成鍵
索引訪問的不同特點
4 機動靈活:思考SQL語句
SQL的本質
掌握SQL藝術的五大要素
過濾
5 了如指掌:理解物理實現
物理結構的類型
衝突的目標
把索引當成數據倉庫
記錄強制排序
數據自動分組(Grouping)
分區是雙刃劍
分區與數據分布
數據分區的最佳方法
預連線表
神聖的簡單性
6 錦囊妙計:認識經典SQL模式
小結果集,直接條件
小結果集,間接條件
多個寬泛條件的交集
多個間接寬泛條件的交集
大結果集
基於一個表的自連線
通過聚合獲得結果集
基於日期的簡單搜尋或範圍搜尋
結果集和別的數據存在與否有關
7 變換戰術:處理層次結構
小結果集,直接條件
小結果集,間接條件
多個寬泛條件的交集
多個間接寬泛條件的交集
大結果集
基於一個表的自連線
通過聚合獲得結果集
基於日期的簡單搜尋或範圍搜尋
結果集和別的數據存在與否有關
8 孰優孰劣:認識困難,處理困難
看似高效的查詢條件
抽象層
分散式系統
動態定義的搜尋條件
9 多條戰線:處理並發
資料庫引擎作為服務提供者
並發修改數據
10 集中兵力:應付大數據量
增長的數據量
數據倉庫
11 精於計謀:挽救回響時間
數據的行列轉換
基於變數列表的查詢
基於範圍的聚合
一般規則,最後使用
查詢與列表中多個項目相符的記錄
最佳匹配查詢
最佳化器指令
12 明察秋毫:監控性能
資料庫速度緩慢
伺服器負載因素
何謂“性能優良”
從業務任務角度思考
執行計畫
合理運用執行計畫
總結:影響性能的重要因素
Photo Credits
索引
媒體評論
體悟戰爭箴言,精通SQL兵法:
在所有戰爭中,顯示軍事才華的第一步是戰略規劃。
——Joseph de Maistre
戰爭中有一些基本的原則,無視這些原則非常危險,而遵循這些原則就可能勝利。
——General Antoine-Henri de Jomini
無論誰想運籌帷幄,都要遵循羅馬的戰略戰術:首先是速決戰。
——Niccolo Machiavelli
沒有人可以保證戰爭的勝利,只能等待它的回報。
——溫斯頓·邱吉爾
作者簡介
Stephane Faroult,經營著RoughSea公司,從事資料庫諮詢業務,致力於幫助客戶從資料庫投資中獲得最佳性能。他的SQL經驗開始於1983年。Oracle法國的第一個性能及調優課程就是他1987年編寫的。