Anrufdatensätze von unbekannten Nummern finden
Unsere Datenbank enthält zwei Tabellen: „Phone_book“ (mit Namen und Telefonnummern) und „Call“ (mit Anrufprotokollen). Das Ziel besteht darin, Anrufe zu lokalisieren, die von Nummern ausgehen, die nicht in der Tabelle „Telefonbuch“ aufgeführt sind.
Lösungen:
Mehrere SQL-Abfragen können dies erreichen; Die Effizienz hängt von der Datenbankoptimierung und den Tabellengrößen ab.
Methode 1 (NICHT IN):
Diese einfache Abfrage ist effizient für kleinere „Phone_book“-Tabellen:
<code class="language-sql">SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book);</code>
Methode 2 (NICHT EXISTIERT):
Ein alternativer Ansatz, der häufig für die Leistung bei größeren Datensätzen bevorzugt wird:
<code class="language-sql">SELECT * FROM Call WHERE NOT EXISTS ( SELECT 1 FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number );</code>
Methode 3 (LEFT OUTER JOIN):
Eine dritte Option mit einem 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>
Wichtiger Hinweis: Für eine optimale Leistung ersetzen Sie SELECT *
durch eine Liste spezifischer Spalten, die aus der Tabelle „Aufruf“ benötigt werden. Dies reduziert den Datenabruf und verbessert die Abfragegeschwindigkeit.
Das obige ist der detaillierte Inhalt vonWie identifiziere ich Anrufe von nicht gelisteten Telefonnummern in einer verknüpften Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!