1

2つの異なる方法でSQLクエリを作成する必要があります。どちらも同じ出力を提供します。しかし、それでも理解できません

  1. 両方のクエリの違いは何ですか?

  2. アクセスが速いのはどれですか?

  3. どちらがよりお勧めですか?

クエリ#1

SELECT PageControlDet.PageId, PageMaster.PageName, PageMaster.PageURL, 
       PageMaster.PageTitle, PageMaster.PageDescription
FROM AgentRoleAccessDet 
INNER JOIN PageControlDet ON AgentRoleAccessDet.ControlId = PageControlDet.ControlId
INNER JOIN PageMaster ON PageControlDet.PageId = PageMaster.PageId 

クエリ#2

SELECT PageControlDet.PageId, PageMaster.PageName, PageMaster.PageURL, 
       PageMaster.PageTitle, PageMaster.PageDescription
FROM   AgentRoleAccessDet,  PageControlDet, PageMaster
WHERE  AgentRoleAccessDet.ControlId = PageControlDet.ControlId and
    PageControlDet.PageId = PageMaster.PageId 
ORDER BY PageControlDet.PageId
4

3 に答える 3

1
  1. 両方のクエリの違いは何ですか?

1つは使用しINNER JOIN、もう1つは使用しません。句内のすべてのテーブルをコンマで区切ってリストするだけでFROM、古いスタイル/構文になります。これは、最近ではほとんど非推奨になっています。JOINこれは、構文が標準に導入される前のものです。

  1. アクセスが速いのはどれですか?

それらは同等にうまく機能するはずです。確実に知るために実行プランを生成する必要がありますが、オプティマイザーは両方を同等に扱う必要があります。

  1. どちらがよりお勧めですか?

最初。結合を明示的でフィルタリングと区別することで、他の人が将来クエリを理解するのに役立ちます。また、結合を導入するとすぐに、OUTER非推奨の構文を使用して2番目のスタイルを使用する必要があります。

于 2013-02-12T08:06:19.373 に答える
0

必ず内部結合を使用する必要があります。

セクションで複数のテーブルを指定するFromことは推奨されておらず、あいまいなクエリ解釈につながる可能性があります。詳細については、この回答を参照してください。

于 2013-02-12T08:04:14.387 に答える