2016-05-03 6 views
1

廃止予定のSQL(* =)を左結合に変換しています。次のSQL文は同等ですか?パフォーマンスは改善されますか?古いSQLを変換するには?

OLD

SELECT n.name, 
    n.address, 
    e.email, 
    e.title, 
    m.car, 
    l.type  
    FROM name n, 
    employee e, 
    miscellaneous m, 
    lifestyle l  
WHERE n.id = 3 
AND n.id = e.id 
AND n.id *= m.id 
AND n.id *= l.id; 

NEW

SELECT n.name, 
    n.address, 
    e.email, 
    e.title, 
    m.car, 
    l.type  
    FROM name n, 
    employee e, 
    miscellaneous m, 
    lifestyle l 
Inner Join empId ON n.id = e.id 
Left Join miscId ON n.id = m.id  
Left Join lifeId ON n.id = l.id; 
+1

サイドノート答えた場合:理由も、内側はそうあなたがスタイルを混合していないジョイン「に変換」ではありませんの? –

+0

追加された内部結合。新しいクエリは古いクエリと同等ですか? –

答えて

5

あなたの新しいクエリが正しくありません。

変換されたバージョンは次のようになります

SELECT n.NAME 
    , n.address 
    , e.email 
    , e.title 
    , m.car 
    , l.type 
FROM NAME n 
INNER JOIN employee e ON n.id = e.id 
LEFT JOIN miscellaneous m ON n.id = m.id 
LEFT JOIN lifestyle l ON n.id = l.id; 

WHERE n.id = 3 

両方のクエリが同じ実行します。最初のものはちょうど古いスタイルです。

てください「回答としてマーク」のポストは質問