本書贊譽
譯者序
序
前言
緻謝
關於作者
關於技術編輯
第1章 數據模型設計1
第1條:確保所有錶都有主鍵1
第2條:避免存儲冗餘數據4
第3條:消除重復數據組7
第4條:每列隻存儲一個屬性9
第5條:理解為什麼存儲計算列通常有害無益13
第6條:定義外鍵以確保引用完整性16
第7條:確保錶間關係的閤理性19
第8條:當第三範式不夠時,采用更多範式22
第9條:非規範化數據倉庫27
第2章 可編程性與索引設計30
第10條:創建索引時空值的影響30
第11條:創建索引時謹慎考慮以最小化索引和數據掃描35
第12條:索引不隻是過濾37
第13條:不要過度使用觸發器41
第14條:使用過濾索引包含或排除數據子集45
第15條:使用聲明式約束替代編碼校驗47
第16條:瞭解數據庫使用的SQL方言並編寫相應的代碼48
第17條:瞭解何時在索引中使用計算結果51
第3章 當你不能改變設計時55
第18條:使用視圖來簡化不能更改的內容55
第19條:使用ETL將非關係數據轉換為有用的信息60
第20條:創建匯總錶並維護64
第21條:使用UNION語句將非規範化數據列轉行66
第4章 過濾與查找數據72
第22條:瞭解關係代數及其如何在SQL中實現72
第23條:查找不匹配或缺失的記錄78
第24條:瞭解何時使用CASE解決問題79
第25條:瞭解解決多條件查詢的技術83
第26條:如需完美匹配,先對數據進行除操作88
第27條:如何按時間範圍正確地過濾日期和時間的列91
第28條:書寫可參數化搜索的查詢以確保引擎使用索引94
第29條:正確地定義“左”連接的“右”側97
第5章 聚閤100
第30條:理解GROUP BY的工作原理100
第31條:簡化GROUP BY子句106
第32條:利用GROUP BY或HAVING解決復雜的問題109
第33條:避免使用GROUP BY來查找最大值或最小值113
第34條:使用OUTER JOIN時避免獲取錯誤的COUNT()117
第35條:測試HAVING COUNT(x) [某數時包含零值記錄121
第36條:使用DISTINCT獲取不重復的計數123
第37條:知道如何使用窗口函數126
第38條:創建行號與排名129
第39條:創建可移動聚閤函數131
第6章 子查詢136
第40條:瞭解在何處使用子查詢136
第41條:瞭解關聯和非關聯子查詢的差異140
第42條:盡可能使用公共錶錶達式而不是子查詢145
第43條:使用連接而非子查詢創建更高效的查詢151
第7章 獲取與分析元數據154
第44條:瞭解如何使用係統的查詢分析器154
第45條:學習獲取數據庫的元數據164
第46條:理解執行計劃的工作原理168
第8章 笛卡兒積175
第47條:生成兩張錶所有行的組閤並標示一張錶中間接關聯另一張錶的列175
第48條:理解如何以等分量排名177
第49條:知道如何對錶中的行配對181
第50條:理解如何列齣類彆與前三偏好185
第9章 計數錶189
第51條:根據計數錶內定義的參數生成空行189
第52條:使用計數錶和窗口函數生成序列193
第53條:根據計數錶內定義的範圍生成行196
第54條:根據計數錶定義的值範圍轉換某個錶中的值199
第55條:使用日期錶簡化日期計算205
第56條:創建在某個範圍內所有日期的日程錶209
第57條:使用計數錶行轉列212
第10章 層次數據建模217
第58條:從鄰接列錶模型開始218
第59條:對不常更新的數據使用嵌套集以提升查詢性能220
第60條:使用存儲路徑簡化設置與搜索222
第61條:使用祖先遍曆閉包做復雜搜索224
附錄 日期與時間類型、運算符和函數228
· · · · · · (
收起)