結合またはサブクエリの長所と短所は?

サブクエリは、別のクエリ内のクエリです。サブクエリには、別のサブクエリが含まれる場合もあります。これらは、「ネストされた」サブクエリと呼ばれます。結合とは、クエリの "From" 句で 2 つ以上のテーブルが参照されている場合です。データベース エンジンが異なれば、サブクエリと結合の最適化も異なる場合があります。たとえば、DB2 のオプティマイザーは、特定の基準が満たされるとサブクエリを結合に変換します。場合によっては、サブクエリよりも結合の方がパフォーマンスが向上します。
サブクエリを構成するもの
サブクエリは、外側の "INSERT"、"UPDATE"、"MERGE"、または "DELETE" ステートメントの "WHERE" または "HAVING" 句内の "SELECT" ステートメントです。サブクエリは、「内部クエリ」または「内部選択」とも呼ばれます。サブクエリには、1 つ以上のテーブルを含む "FROM" 句を含めることができ、オプションで "WHERE"、"GROUP BY"、または "HAVING" 句を含めることができます。常に括弧で囲みます。
サブクエリの長所と短所
サブクエリは、クエリを構造化してステートメントの各部分を分離し、通常は複雑な結合と結合を必要とする同じ操作を実行し、読みやすいため、有利です。サブクエリは、構造が読みやすいため、「構造化クエリ言語」(SQL) という名前の基礎にもなりました。欠点は、同じ SQL ステートメント内のサブクエリ内で、テーブルを変更して同じテーブルから選択することができないことです。サブクエリは、データベース オプティマイザーによるサブクエリの処理方法により、結合よりも実行に時間がかかる場合があります。
参加する理由
ほとんどのサブクエリは結合として書き直すことができ、ほとんどの結合はサブクエリとして書き直すことができます。結合は、関連する列によって 2 つ以上のテーブルを定義します。通常、テーブルは主キーと外部キーで結合されます。たとえば、従業員テーブルには従業員 ID 列の主キーがあり、タイムシート テーブルには従業員テーブルの外部キーである従業員 ID 列もあります。 SQL 結合は、「WHERE employee.empid =timesheet.empid」または「FROM employee JOIN timesheet ON (employee.empid =timesheet.empid)」のように記述できます。
結合の利点と欠点
結合の主な利点は、実行速度が速いことです。パフォーマンスの向上は、エンド ユーザーには気付かれない場合があります。ただし、列には具体的に名前が付けられ、データベース エンジンによってインデックスが付けられ、最適化されるため、ほとんどの場合、取得時間はサブクエリよりも速くなります。内部結合と外部結合、左結合と右結合、完全結合、交差結合もあります。結合を使用することの欠点は、サブクエリほど読みにくいことです。もう 1 つの欠点は、正しい目的の結果セットを生成するために使用する適切なタイプの結合がどれであるかがわかりにくいことです。