結合ステートメントの最適化:
Mysql4.1 は SQL サブクエリのサポートを開始します。この手法を使用すると、SELECT ステートメントを使用してクエリ結果の単一列を作成し、この結果を別のクエリのフィルター条件として使用できます。サブクエリを使用すると、論理的に複数のステップを一度に完了する必要がある多くの SQL 操作を完了でき、トランザクションやテーブルのロックも回避でき、記述も簡単です。ただし、場合によっては、サブクエリをより効率的な結合 (JOIN) に置き換えることができます。
注文レコードを持たないすべてのユーザーを抽出したいと仮定すると、次のクエリを使用してこのクエリを完了できます:
SELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo)
接続を使用する場合 (JOIN) ...このクエリを完了すると、速度が大幅に速くなります。特に salesinfo テーブルに CustomerID のインデックスがある場合、パフォーマンスは次のようになります。
SELECT * FROM customerinfo LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo.CustomerID
WHERE salesinfo.CustomerID IS NULL
Connection ( JOIN) の方が効率的である理由は、MySQL がこの論理 2 段階のクエリを完了するためにメモリ内に一時テーブルを作成する必要がないためです。