你瞭解一條sql的執行順序嗎

北漂程式設計師 發表於 2021-10-13
SQL

sql是後端開發人員經常碰到的問題,我們經常會寫這樣的sql:select name,id from student where id=12 order by id desc,把這條sql放到資料庫中資料庫便會給我們返回執行結果,那麼有沒有好奇這條sql是怎麼執行的吶,今天我們就揭開這個神祕的面紗。以mysql為例

一、前言

都知道mysql作為資料庫儲存系統,可以為我們提供資料儲存的功能,同時提供了查詢介面供我們去查詢資料,從這方面來說,mysql很像一個業務系統,只不過mysql處理的是各種各樣的關係型資料。提交給mysql的sql語句是一門語言,類似於常用的java語言,只不過sql語言僅僅是資料庫系統可以識別而已,既然是一門語言那麼資料庫就會去解析去處理,這個處理的過程就是今天要分享的sql的執行順序。

二、詳述

這裡有這麼一條簡單的sql語句

select id,name,address from student where name like '%li%' order by id desc 

其執行結果如下,

你瞭解一條sql的執行順序嗎

 

 今天就來分析這個簡單的sql的執行順序。

2.1、from

mysql收到sql語句後,之前的語法解析、語義分析這裡暫時不解釋,直接分析sql的執行。

第一步是執行from後的語句,也就是載入表中的資料,我們都知道表中的資料是儲存在磁碟上的,這裡就是把表中的資料載入到記憶體中,把所有的資料均載入出來,即下面的資料

你瞭解一條sql的執行順序嗎

這時會形成一個表或者稱為資料集稱為T1

2.2、where

在載入完成以後,便會執行where條件,即從T1中選擇符合條件的資料,這裡的條件是name like '%li%',也就是name中包含li的資料,即下面的資料

你瞭解一條sql的執行順序嗎

 

 這時形成一個表記為T2

2.3、select

在T2的基礎上進行列的選擇,也就是執行select後的操作,這裡選擇的是id name address三列,即下面的資料

你瞭解一條sql的執行順序嗎

 

 這時形成一個表記為T3

2.4、order by 

在T3的基礎上執行order by操作,這裡按照id倒序,即下面的資料

你瞭解一條sql的執行順序嗎

 

 這時形成一個表記為T4

 

到這裡我們的select id,name,address from student where name like '%li%' order by id desc 這樣一條sql便執行完成,mysql便會把執行結果返回給使用者。

三、總結

本文分析了一條簡單sql的執行順序,通過這樣的過程可以很清楚的瞭解mysql的sql執行原理,進一步加深對sql的理解,接下來會繼續為大家分享有關sql執行順序的例子,希望大家喜歡。

你瞭解一條sql的執行順序嗎