天天看點

sql 執行順序_Sql語句執行順序,你了解了嗎

1.序言

記得前幾年,還是初級的時候,面試官問到,請你講一下sql語句的執行順序。當時我以為就是按照sql的關鍵字排列順序來執行的。當時說完,面試官心裡估計已經直接pass我了吧。今天複習的時候,突然想起這個基礎知識點,是以有時間就來發表一下了。

sql 執行順序_Sql語句執行順序,你了解了嗎

山東掌趣網絡科技

2.sql語句的執行順序

2.1 為什麼要了解sql語句執行順序

了解一個sql語句的執行順序,可以讓我們清楚到sql執行時的操作順序,進而有利于我們更好的優化自己的sql語句,提升程式性能。

sql 執行順序_Sql語句執行順序,你了解了嗎

山東掌趣網絡科技

舉個栗子:

--sql 1

select a.* from table_a a left join table_b b on a.id = b.a_id where b.name = 'john';

--sql 2

select * from table_a where id = (select a_id from table_b where name = 'john');

倘若說table_a和table_b都是幾十幾百萬資料的表。而name=‘john’這個過濾字段可以查到table_b的唯一資料。那麼此時,一定是sql2的執行效率要高于sql1的。為什麼?通過sql執行順序可以知道,table_a和table_b會優先執行聯表操作,兩個都是大表。其查詢出來的結果集虛拟表也會很大。而sql2中,table_a隻用通過table_b查詢出來的唯一資料更快的擷取到指定結果。

sql 執行順序_Sql語句執行順序,你了解了嗎

山東掌趣網絡科技

是以,如果你不知道sql執行順序,同樣的業務需求,也許,你就使用了性能不夠好的sql1了。

2.2 sql語句執行順序說明

(8) SELECT (9)DISTINCT

(1) FROM

(3) JOIN

(2) ON

(4) WHERE

(5) GROUP BY

(6) WITH {CUBE|ROLLUP}

(7) HAVING

(10) ORDER BY

(11) LIMIT

山東掌趣網絡科技

繼續閱讀