下面的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
下面的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
的2條SQL語句是等價的。你可以看執行計劃來確認。通常,給定2個SQL語句以相同的方式影響/返回相同的行,服務器可以自由地以相同的方式執行它們。
INNER JOIN語法更適合於可讀性的原因而不是性能。 –
它們是等效查詢 - 都是內部連接,但第一個使用較舊的隱式連接語法。你的數據庫應該以完全相同的方式執行它們。
如果您不確定,可以隨時使用SQL Management Studio至view and compare the execution plans of both queries。
第一個例子是我所見到的被稱爲的Oracle加入。正如前面提到的那樣,性能差異似乎很小。從可讀性的角度來看,我更喜歡第二個示例,因爲它將連接條件與篩選條件分開。
它們是相同的查詢。第一個是較舊的替代語法,但它們都意味着做一個內部連接。
您應該避免使用舊的語法。這不僅僅是可讀性,但是當你構建更復雜的查詢時,有些事情你根本無法用舊的語法來完成。此外,舊語法正在逐漸淘汰,在大多數產品中標記爲等效的外連接語法已被廢棄,並且iirc已至少放棄了一次。
[SQL左連接vs FROM行上的多個表有可能重複?](http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-line) –