データベースには論理的な削除があり、各テーブルには「削除済み」フラグがあり、これは null 許容の日時フィールドです。
Deleted DATETIME NULL
クエリでは、次のパターンを使用します。
SELECT *
FROM TableA a
INNER JOIN TableB b
ON b.id = a.pkid
AND b.deleted IS NULL
INNER JOIN TableC c
ON c.id = b.pkid
AND c.deleted IS NULL
WHERE a.deleted IS NULL
それはより効率的ですか:
SELECT *
FROM TableA a
INNER JOIN TableB b
ON b.id = a.pkid
INNER JOIN TableC c
ON c.id = b.pkid
WHERE a.deleted IS NULL
AND b.deleted IS NULL
AND c.deleted IS NULL
Left Join が入ると、親が変わることを理解しています。ここで INNER の結合について話している。
サーバーがクエリを実行する方法のため、最初の方法がより効率的だと思います。ステージについて見たページが見つかりません...つまり、最初に結合、次に場所、次に順序、選択...しかし、最初の例ではデータが制限され、次に場所が起動されます。 WHEREがカバーするデータが少ないのですか?