2012-05-30 28 views
1

在一本oracle書中,我讀到當我們通過連接兩個或多個表來執行SELECT時,如果在SELECT名稱工作得更快之前使用tablename。
如:
SELECT table1.name, table1.dob....,而不是SELECT name, dob....JOIN - 在列名之前添加表名是否是一種好的做法?

它是在MySQL以同樣的方式?

編輯

我知道,這是一個很好的做法時,有相同的字段名。即使沒有相同的字段名稱,我在想的也是性能觀點

+0

確定'explain'給出了相同的計劃 – triclosan

+0

@triclosan你能解釋一下嗎?我沒有完全得到你 – Anish

+0

運行'explain first_query'和'explain second_query'並比較結果 – triclosan

回答

1

我不知道性能,但這是一個很好的做法,尤其是在連接表格時。連接的表可能具有相同的字段名稱,並且查詢將失敗。您也可以使用別名,如果你的表的名稱太長:

SELECT t1.name, t2.dob FROM table1 t1 JOIN table t2 ON ... 
+0

當有相同的字段名稱時,這是一個很好的做法。即使沒有相同的字段名稱,我在想的是關於性能的觀點 – Anish

+0

是的,事實上,我不知道性能的觀點,但我認爲差異可以忽略不計。你做了一些基準嗎? – sp00m

1

效率的角度來看,甲骨文和MySQL 執行前編譯的SQL到一個內部表示,所以不認爲執行時間必須有顯着差異,因爲如果它們沒有被指定,它們將從字段名稱中決定表格。時差將在編譯時間,在那裏他們推導出每個字段的表格。

事實上,我個人懷疑,如果指定表名,Oracle執行速度會更快!

+0

當有相同的字段名稱時,這是一個很好的做法。我想的是關於性能的觀點,即使沒有相同的字段名稱 – Anish

+0

我已經編輯了答案。 –

0

當字段名稱相同時,這是不好的做法,這是不錯的做法。這不是關於效率,而是關於當其他人將字段添加到具有重疊名稱的連接表中時,您的查詢不會中斷,所以您的工作在六個月的時間內運行,而不僅僅是在今天。

相關問題