Suche nach einer Zahl in den letzten N Zeilen einer großen MySQL-Tabelle
In diesem Szenario haben Sie eine lange Tabelle mit Millionen von Zeilen, von denen jede einen Index ( Autoinkrement) und ein Integer-Feld. Sie möchten schnell feststellen, ob eine bestimmte Zahl in den letzten n Zeilen der Tabelle erscheint.
Effiziente Lösung
Der effektivste Ansatz besteht darin, eine abgeleitete Tabelle wie folgt zu nutzen:
SELECT `id`
FROM (
SELECT `id`, `val`
FROM `big_table`
ORDER BY `id` DESC
LIMIT $n
) AS t
WHERE t.`val` = $certain_number;
Nach dem Login kopieren
Erklärung:
- Diese Abfrage erstellt eine abgeleitete Tabelle. Auswahl der Spalten „id“ und „val“ aus der big_table.
- Sie sortiert die abgeleitete Tabelle in absteigender Reihenfolge basierend auf der Spalte „id“ und stellt sicher, dass die neuesten Zeilen zuerst angezeigt werden.
- Die LIMIT $n-Klausel schränkt die Ergebnismenge auf die letzten n Zeilen ein.
- Schließlich vergleicht die WHERE-Bedingung die Val-Spalte der abgeleiteten Tabelle mit der angegebenen bestimmten Zahl. Identifizieren von Zeilen, die die Zahl in den letzten n Zeilen enthalten.
Vorteile:
-
Indizierte Suche: Sortieren nach der automatischen Inkrementierung Die ID-Spalte nutzt den Tabellenindex und optimiert die Suche.
-
Leistung: Durch die Beschränkung der Ergebnismenge auf die letzten n Zeilen entfällt die Notwendigkeit, die gesamte Tabelle zu scannen, was die Leistung erheblich verbessert.
-
Flexibilität: Mit der Abfrage können Sie den Parameter $n ändern, um in verschiedenen Bereichen der letzten Zeilen zu suchen.
Das obige ist der detaillierte Inhalt vonWie kann man in den letzten N Zeilen einer großen MySQL-Tabelle effizient nach einer Zahl suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!