1. 程式人生 > 其它 >【資料庫】優化SQL語言

【資料庫】優化SQL語言

第1章資料模型設計

第1條:確保所有表都有主鍵

第2條:避免儲存冗餘資料

第3條:消除重複資料組

第4條:每列只儲存一個屬性

第5條:理解為什麼儲存計算列通常有害無益

第6條:定義外來鍵以確保引用完整性

第7條:確保表間關係的合理性

第8條:當第三正規化不夠時,採用更多正規化

第9條:非規範化資料倉庫

第2章可程式設計性與索引設計

第10條:建立索引時空值的影響

第11條:建立索引時謹慎考慮以最小化索引和資料掃描

第12條:索引不只是過濾

第13條:不要過度使用觸發

第14條:使用過濾索引包含或排除資料子集

第15條:使用宣告式約束替代編碼校驗

第16條:瞭解資料庫使用的SQL方言並編寫相應的

第17條:瞭解何時在索引中使用計算結果

第3章 當你不能改變設計時

第18條:使用檢視來簡化不能更改的

第19條:使用ETL將非關係資料轉換為有用的資訊

第20條:建立彙總表並維護

第21條:使用UNION語句將非規範化資料列轉行

第4章過濾與查詢資料

第22條:瞭解關係代數及其如何在SQL實理

第23條:查詢不匹配或缺失的記

第24條:瞭解何時使用CASE解決問題

第25條:瞭解解決多條件查詢的技術

第26條:如需完美匹配,先對資料進行除操作

第27條:如何按時間範圍正確地過濾日期和時間的列

第28條:書寫可引數化搜尋的查詢以確保引擎使用索

第29條:正確地定義“左”連線的“右”側

第5章聚合

第30條:理解GROUPBY的工作
原理

第31條:簡化GROUP BY子句

第32條:利用GROUP BY或HAVING解決複雜的問題

第33條:避免使用GROUP BY來查詢最大值或最小值

第34條:使用OUTER JOIN時避免獲取錯誤的COUNTO-

第35條:測試HAVING COUNT(x) <某數時包含零值記錄

第36條:使用DISTINCT獲取不重複的計數

第37條:知道如何使用視窗函式

第38條:建立行號與排名

第39條:建立可移動聚合函

第6章 子查詢

第40條:瞭解在何處使用子查詢

第41條:瞭解關聯和非關聯子查詢的差異

第42條:儘可能使用公共表表達式而不是子查詢

第43條:使用連線而非子查詢建立更
高效的查詢

第7章 獲取與分析元資料

第44條:瞭解如何使用系統的查詢分析器

第45條:學習獲取資料庫的元資料

第46條:理解執行計劃的工作原理

第8章 笛卡兒積

第47條:生成兩張表所有行的組合並標示一張表中間接關聯另一張表的列

第48條:理解如何以等分量排名

第49條:知道如何對錶中的行配對

第50條:理解如何列出類別與前三偏好

第9章計數表

第51條:根據計數表內定義的引數生成空行

第52條:使用計數表和視窗函式生成序列

第53條:根據計數表內定義的範圍生成行

第54條:根據計數表定義的值範圍

轉換某個表中的值

第55條:使用日期表簡化日期計算

第56條:建立在某個範圍內所有日期的日程表

第57條:使用計數錶行轉列

第10章 層次資料建模

第58條:從鄰接列表模型開始

第59條:對不常更新的資料使用巢狀集以提升查詢效能

第60條:使用儲存路徑簡化設定與搜尋

第61條:使用祖先遍歷閉包做複雜搜尋