今天來聊聊喜聞樂見的 SQL。
數據庫執行 SQL 語句有幾個步驟,包括:
- 解析 SQL 語句并檢查其有效性。
- 將 SQL 轉換為內部表示結構,如關系代數。并創建查詢樹或查詢圖,表示操作的邏輯順序。
- 優化內部表示結構,并創建一個執行計劃。優化器會根據索引、統計數據、可用資源和查詢復雜度等因素分析各種潛在的執行計劃。其目標是確定執行查詢的最有效方式。
- 執行該計劃并返回結果。這一階段包括訪問表中的必要數據、執行任何過濾或條件語句、執行 SQL 語句中指定的 join、聚合和排序操作。
下圖以可視化的方式展示了這種執行過程。
圖片
SQL 的執行非常復雜,需要考慮很多因素,例如:
- 索引和緩存的使用
- 表連接 (Join) 的順序
- 并發控制
- 事務管理
我們下面來看看 SQL join 如何工作?下圖詳細說明了 4 種 SQL join 的工作方式。
圖片
- 內部連接 - 返回兩個表中匹配的記錄。
- 左連接 - 返回左表中的所有記錄和右表中的匹配記錄。
- 右連接 - 返回右表中的所有記錄和左表中的匹配記錄。
- 全外連接 - 返回左表或右表中匹配的所有記錄。