Recherche d'enregistrements d'appels à partir de numéros inconnus
Notre base de données comprend deux tables : « Phone_book » (contenant les noms et les numéros de téléphone) et « Call » (contenant les journaux d'appels). Le but est de repérer les appels provenant de numéros non répertoriés dans le tableau 'Phone_book'.
Solutions :
Plusieurs requêtes SQL peuvent accomplir cela ; l'efficacité dépend de l'optimisation de la base de données et de la taille des tables.
Méthode 1 (PAS DANS) :
Cette requête simple est efficace pour les petites tables « Phone_book » :
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>
Méthode 2 (N'EXISTE PAS) :
Une approche alternative, souvent privilégiée pour les performances avec des ensembles de données plus volumineux :
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS ( SELECT 1 FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number );</code>
Méthode 3 (JOINTURE EXTERNE GAUCHE) :
Une troisième option utilisant un LEFT OUTER JOIN
:
<code class="language-sql">SELECT * FROM Call LEFT OUTER JOIN Phone_book ON Call.phone_number = Phone_book.phone_number WHERE Phone_book.phone_number IS NULL;</code>
Remarque importante : Pour des performances optimales, remplacez SELECT *
par une liste de colonnes spécifiques nécessaires dans la table « Appel ». Cela réduit la récupération des données et améliore la vitesse des requêtes.
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!