2013-03-27 71 views
1

是否有性能以下兩個查詢的區別?MySQL「AS」而不是「AS」的性能

SELECT * FROM users AS u LEFT JOIN parents AS p ON u.id=p.user_id 

SELECT * FROM users u LEFT JOIN parents p ON u.id=p.user_id 

(第二個不具備AS

+1

不,同樣的事情。 – Bridge 2013-03-27 08:54:12

+0

我認爲quey沒有性能差異,但是第一個查詢是更好的方法 – Shin 2013-03-27 08:54:17

+0

http://stackoverflow.com/questions/8363108/how-does-table-alias-names-affect-performance的潛在副本 – 2013-03-27 08:55:40

回答

2

與一切:來衡量是要知道。如果你真的想知道運行一個分析器和度量。否則就把它從我們身上拿走吧:到目前爲止,你還沒有把這個想法付諸實踐。

如果有一個在所有應該一)被認爲是在MySQL中的一個漏洞(相當數量)有什麼區別,B)是解析一部分,而不是查詢執行部分查詢過程中出現問題,因此是可以忽略不計無論如何,因爲無論如何(如果不是更多),執行而不是解析通常佔總「查詢時間」的99.99999%。

如果有任何可測量的差異,它應該是非常,非常,非常小,因此A)不值得理會的差別,因爲用戶通常不會在納秒爲單位通知的加速和b)只有當你在緊密循環中運行許多,數千個查詢時纔會顯示。

如果MySQL的貢獻者沒有搞砸,那麼根本就沒什麼區別,因爲AS關鍵字只是可選的並且易於理解。 知道肯定的唯一方法是配置文件。這不會是第一次在軟件中出現一些奇怪的錯誤或行爲。但是,假設AS關鍵字根本沒有什麼區別,因爲很久以前,數以百萬計的MySQL用戶(或者他們之前都沒有發現過)已經「發現」困擾,你永遠不知道Puh)。花費任何時間分析這個「問題」,恕我直言,是浪費時間。

閱讀rules of Optimization club

只有當實際上性能問題,你開始尋找優化的地方。而且你只會優化「低掛果實」或佔據相當大負載的東西(無論是I/O,CPU,網絡等等)。優化刪除AS關鍵字以提高性能的查詢是一種微型優化,永遠不會回報您的時間投入(禁止錯誤/問題)。作爲一個「思想實驗」,儘管你的問題可以(也應該)通過建立使用分析,而不是猜測的硬數據,別人的意見等回答


沒有離開了東西一樣querycaches是可能每次執行查詢時可能會遇到在有/無AS關鍵字或AS關鍵字或AS關鍵字的情況下執行查詢的情況,這會導致查詢執行計劃(不必要地)重新創建或查詢緩存無法無法執行被重用等等,但現在我們真的在這裏說邊緣案例,爲了這個說法,再說一遍:來衡量是知道

1

的實際上是一樣的。

AS關鍵字是可選的。就像OUTER關鍵字LEFT JOINLEFT OUTER JOIN