是否有性能以下兩個查詢的區別?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
)
是否有性能以下兩個查詢的區別?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
)
與一切:來衡量是要知道。如果你真的想知道運行一個分析器和度量。否則就把它從我們身上拿走吧:到目前爲止,你還沒有把這個想法付諸實踐。
如果有一個在所有應該一)被認爲是在MySQL中的一個漏洞(相當數量)有什麼區別,B)是解析一部分,而不是查詢執行部分查詢過程中出現問題,因此是可以忽略不計無論如何,因爲無論如何(如果不是更多),執行而不是解析通常佔總「查詢時間」的99.99999%。
如果有任何可測量的差異,它將應該是非常,非常,非常小,因此A)不值得理會的差別,因爲用戶通常不會在納秒爲單位通知的加速和b)只有當你在緊密循環中運行許多,數千個查詢時纔會顯示。
如果MySQL的貢獻者沒有搞砸,那麼根本就沒什麼區別,因爲AS
關鍵字只是可選的並且易於理解。 知道肯定的唯一方法是配置文件。這不會是第一次在軟件中出現一些奇怪的錯誤或行爲。但是,假設AS
關鍵字根本沒有什麼區別,因爲很久以前,數以百萬計的MySQL用戶(或者他們之前都沒有發現過)已經「發現」困擾,你永遠不知道)。花費任何時間分析這個「問題」,恕我直言,是浪費時間。
只有當實際上是性能問題,你開始尋找優化的地方。而且你只會優化「低掛果實」或佔據相當大負載的東西(無論是I/O,CPU,網絡等等)。優化刪除AS
關鍵字以提高性能的查詢是一種微型優化,永遠不會回報您的時間投入(禁止錯誤/問題)。作爲一個「思想實驗」,儘管你的問題可以(也應該)通過建立使用分析,而不是猜測的硬數據,別人的意見等回答
我沒有離開了東西一樣querycaches是可能每次執行查詢時可能會遇到在有/無AS
關鍵字或AS
關鍵字或AS
關鍵字的情況下執行查詢的情況,這會導致查詢執行計劃(不必要地)重新創建或查詢緩存無法無法執行被重用等等,但現在我們真的在這裏說邊緣案例,爲了這個說法,再說一遍:來衡量是知道。
的實際上是一樣的。
AS
關鍵字是可選的。就像OUTER
關鍵字LEFT JOIN
和LEFT OUTER JOIN
。
當使用標識符混疊select_expr時,AS關鍵字是可選。 但是,因爲AS是可選的。 MySQL將第二個解釋爲別名。 由於這個原因,在指定列別名時,習慣於明確使用AS是一種好習慣。
由:http://dev.mysql.com/doc/refman/5.0/en/select.html#idp56626352
不,同樣的事情。 – Bridge 2013-03-27 08:54:12
我認爲quey沒有性能差異,但是第一個查詢是更好的方法 – Shin 2013-03-27 08:54:17
http://stackoverflow.com/questions/8363108/how-does-table-alias-names-affect-performance的潛在副本 – 2013-03-27 08:55:40