ホームページ > データベース > mysql チュートリアル > 未変更の予約をデータベースから効率的に取得するにはどうすればよいですか?

未変更の予約をデータベースから効率的に取得するにはどうすればよいですか?

DDD
リリース: 2025-01-23 19:56:23
オリジナル
528 人が閲覧しました

How to Efficiently Retrieve Unmodified Reservations from a Database?

未変更の予約のデータベース クエリ

この記事では、reservationreservation_log という 2 つのテーブルを持つデータベースから未変更の予約を効率的に取得する方法について説明します。 単純な WHERE 句は、キャンセルされていない予約を見つけるのには理想的ではありません。より洗練されたアプローチが必要です。

方法 1: NOT IN

を使用した除外

1 つの方法では、否定を使用してキャンセルされた予約を除外します。 reservation_log でキャンセルされた予約を特定し、reservation テーブルからその ID を除外します:

SELECT *
FROM reservation
WHERE id NOT IN (
    SELECT reservation_id
    FROM reservation_log
    WHERE change_type = 'cancel'
);
ログイン後にコピー

方法 2: LEFT JOIN

を使用した最適化されたクエリ

特にインデックス付き列のパフォーマンスを向上させるには、LEFT JOIN をお勧めします。

SELECT r.*
FROM reservation r
LEFT JOIN reservation_log l ON r.id = l.reservation_id AND l.change_type = 'cancel'
WHERE l.id IS NULL;
ログイン後にコピー

この LEFT JOIN は、reservation テーブルからすべての行を返します。 reservation_log からの一致する行 (キャンセルが存在する場合) が含まれます。 WHERE l.id IS NULL 句は結果をフィルターし、reservation_log に一致するキャンセル エントリがない予約のみを返します。

どちらの方法でも、キャンセルされていない予約を効率的に取得できます。 LEFT JOIN アプローチは通常、優れたパフォーマンスを提供します。 最適な方法の選択は、データベースのサイズとインデックス作成によって異なります。

以上が未変更の予約をデータベースから効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート