SQL 語(yǔ)句是怎么執(zhí)行的?你學(xué)會(huì)了嗎?
作者:李華
執(zhí)行該計(jì)劃并返回結(jié)果。這一階段包括訪問(wèn)表中的必要數(shù)據(jù)、執(zhí)行任何過(guò)濾或條件語(yǔ)句、執(zhí)行 SQL 語(yǔ)句中指定的 join、聚合和排序操作。
今天來(lái)聊聊喜聞樂(lè)見(jiàn)的 SQL。
數(shù)據(jù)庫(kù)執(zhí)行 SQL 語(yǔ)句有幾個(gè)步驟,包括:
- 解析 SQL 語(yǔ)句并檢查其有效性。
- 將 SQL 轉(zhuǎn)換為內(nèi)部表示結(jié)構(gòu),如關(guān)系代數(shù)。并創(chuàng)建查詢樹(shù)或查詢圖,表示操作的邏輯順序。
- 優(yōu)化內(nèi)部表示結(jié)構(gòu),并創(chuàng)建一個(gè)執(zhí)行計(jì)劃。優(yōu)化器會(huì)根據(jù)索引、統(tǒng)計(jì)數(shù)據(jù)、可用資源和查詢復(fù)雜度等因素分析各種潛在的執(zhí)行計(jì)劃。其目標(biāo)是確定執(zhí)行查詢的最有效方式。
- 執(zhí)行該計(jì)劃并返回結(jié)果。這一階段包括訪問(wèn)表中的必要數(shù)據(jù)、執(zhí)行任何過(guò)濾或條件語(yǔ)句、執(zhí)行 SQL 語(yǔ)句中指定的 join、聚合和排序操作。
下圖以可視化的方式展示了這種執(zhí)行過(guò)程。
圖片
SQL 的執(zhí)行非常復(fù)雜,需要考慮很多因素,例如:
- 索引和緩存的使用
- 表連接 (Join) 的順序
- 并發(fā)控制
- 事務(wù)管理
我們下面來(lái)看看 SQL join 如何工作?下圖詳細(xì)說(shuō)明了 4 種 SQL join 的工作方式。
圖片
- 內(nèi)部連接 - 返回兩個(gè)表中匹配的記錄。
- 左連接 - 返回左表中的所有記錄和右表中的匹配記錄。
- 右連接 - 返回右表中的所有記錄和左表中的匹配記錄。
- 全外連接 - 返回左表或右表中匹配的所有記錄。
責(zé)任編輯:武曉燕
來(lái)源:
ByteByteGo