Maison > base de données > tutoriel mysql > Comment récupérer efficacement des réservations non modifiées à partir d'une base de données ?

Comment récupérer efficacement des réservations non modifiées à partir d'une base de données ?

DDD
Libérer: 2025-01-23 19:56:23
original
464 Les gens l'ont consulté

How to Efficiently Retrieve Unmodified Reservations from a Database?

Requête de base de données pour les réservations non modifiées

Cet article aborde la récupération efficace des réservations non modifiées à partir d'une base de données comportant deux tables : reservation et reservation_log. Une simple clause WHERE n'est pas idéale pour retrouver des réservations non annulées ; une approche plus sophistiquée est nécessaire.

Méthode 1 : Exclusion à l'aide de NOT IN

Une méthode utilise la négation pour exclure les réservations annulées. Nous identifions les réservations annulées en reservation_log et excluons leurs identifiants du tableau reservation :

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

Méthode 2 : Requête optimisée avec LEFT JOIN

Pour de meilleures performances, notamment avec les colonnes indexées, un LEFT JOIN est recommandé :

<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>
Copier après la connexion

Ce LEFT JOIN renvoie toutes les lignes de la table reservation. Les lignes correspondantes de reservation_log (où une annulation existe) sont incluses. La clause WHERE l.id IS NULL filtre les résultats et renvoie uniquement les réservations sans entrée d'annulation correspondante dans reservation_log.

Les deux méthodes récupèrent efficacement les réservations non annulées. L’approche LEFT JOIN offre généralement des performances supérieures. Le choix de la meilleure méthode dépend de la taille de la base de données et de l'indexation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal