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;
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!
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