【資料庫】優化SQL語言 阿新 • • 發佈:2022-03-16 第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條:使用祖先遍歷閉包做複雜搜尋