2013-07-16 73 views
1

下面的2個查詢執行相同的操作,但是想知道哪個是最快和最可取的?內部連接與多個表上的選擇語句

NUM是在表1 &表2中的主鍵...

select * 
from table1 tb1, 
table2 tb2 
where tb1.num = tb2.num 


select * 
from table1 tb1 
inner join 
table2 tb2 
on tb1.num = tb2.num 
+0

[SQL左連接vs FROM行上的多個表有可能重複?](http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-line) –

回答

1

的2條SQL語句是等價的。你可以看執行計劃來確認。通常,給定2個SQL語句以相同的方式影響/返回相同的行,服務器可以自由地以相同的方式執行它們。

+1

INNER JOIN語法更適合於可讀性的原因而不是性能。 –

0

第一個例子是我所見到的被稱爲的Oracle加入。正如前面提到的那樣,性能差異似乎很小。從可讀性的角度來看,我更喜歡第二個示例,因爲它將連接條件與篩選條件分開。

1

它們是相同的查詢。第一個是較舊的替代語法,但它們都意味着做一個內部連接。

您應該避免使用舊的語法。這不僅僅是可讀性,但是當你構建更復雜的查詢時,有些事情你根本無法用舊的語法來完成。此外,舊語法正在逐漸淘汰,在大多數產品中標記爲等效的外連接語法已被廢棄,並且iirc已至少放棄了一次。