Heim >Datenbank >MySQL-Tutorial >Wie kann ich unveränderte Reservierungen effizient aus einer Datenbank abrufen?

Wie kann ich unveränderte Reservierungen effizient aus einer Datenbank abrufen?

DDD
DDDOriginal
2025-01-23 19:56:23466Durchsuche

How to Efficiently Retrieve Unmodified Reservations from a Database?

Datenbankabfrage für unveränderte Reservierungen

Dieser Artikel befasst sich mit dem effizienten Abruf unveränderter Reservierungen aus einer Datenbank mit zwei Tabellen: reservation und reservation_log. Eine einfache WHERE-Klausel ist nicht ideal, um nicht stornierte Reservierungen zu finden; Es ist ein ausgefeilterer Ansatz erforderlich.

Methode 1: Ausschluss mittels NOT IN

Eine Methode nutzt die Negation, um stornierte Reservierungen auszuschließen. Wir identifizieren stornierte Reservierungen in reservation_log und schließen ihre IDs aus der reservation-Tabelle aus:

<code class="language-sql">SELECT *
FROM reservation
WHERE id NOT IN (
    SELECT reservation_id
    FROM reservation_log
    WHERE change_type = 'cancel'
);</code>

Methode 2: Optimierte Abfrage mit LEFT JOIN

Für eine bessere Leistung, insbesondere bei indizierten Spalten, wird ein LEFT JOIN empfohlen:

<code class="language-sql">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;</code>

Dieser LEFT JOIN gibt alle Zeilen aus der Tabelle reservation zurück. Passende Zeilen aus reservation_log (wo eine Stornierung vorliegt) werden einbezogen. Die WHERE l.id IS NULL-Klausel filtert die Ergebnisse und gibt nur Reservierungen ohne passenden Stornierungseintrag in reservation_log zurück.

Beide Methoden rufen nicht stornierte Reservierungen effektiv ab. Der LEFT JOIN-Ansatz bietet im Allgemeinen eine überlegene Leistung. Die Wahl der besten Methode hängt von der Datenbankgröße und der Indizierung ab.

Das obige ist der detaillierte Inhalt vonWie kann ich unveränderte Reservierungen effizient aus einer Datenbank abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn