Wirkt sich das Hinzufügen ‚LIMIT 1‘ MySQL-Abfragen sie schneller, wenn Sie es wissen, wird nur 1 Ergebnis sein?

StackOverflow https://stackoverflow.com/questions/455476

  •  19-08-2019
  •  | 
  •  

Frage

Wenn ich LIMIT 1 auf eine MySQL-Abfrage hinzufügen, wird es die Suche beenden, nachdem es 1 Ergebnis findet (also es schneller zu machen) oder ist es immer noch alle Ergebnisse holt und am Ende gestutzt?

War es hilfreich?

Lösung

In Abhängigkeit von der Abfrage, eine limit-Klausel hinzufügen, können einen großen Einfluss auf die Leistung haben. Wenn Sie nur eine Zeile (oder für eine Tatsache, dass nur eine Zeile der Abfrage erfüllen kann) und sind nicht sicher, wie die internen Optimierer es ausgeführt werden (zum Beispiel WHERE-Klausel nicht einen Index usw. schlagen), dann Sie sollten auf jeden Fall eine LIMIT-Klausel hinzuzufügen.

Wie für optimierte Abfragen (mit Indizes auf kleine Tischen) wird es wahrscheinlich nicht viel in der Leistung, aber auch hier - wenn Sie nur in einer Zeile interessiert als unabhängig eine LIMIT-Klausel hinzuzufügen.

Andere Tipps

Grenze kann die Leistung der Abfrage (siehe Kommentare und den Link unten) beeinflussen und es reduziert auch die Ergebnismenge, die Ausgabe von MySQL ist. Für eine Abfrage, in der Sie ein einzelnes Ergebnis dort erwarten sind Vorteile.

Darüber hinaus kann die gesamte Abfragezeit als die Übertragung große Ergebnismengen Speicher in der Tat die Ergebnismenge zu begrenzen beschleunigen verwenden und möglicherweise temporäre Tabellen auf der Festplatte erstellen. Ich erwähne das, wie ich vor kurzem einen Antrag sah, die nicht Grenze einen Server aufgrund großen Ergebnismengen und Begrenzung anstelle der Ressourcenauslastung sank enorm töten genutzt haben.

Überprüfen Sie diese Seite für weitere Besonderheiten: MySQL Dokumentation: LIMIT-Optimierung

Wenn es nur 1 Ergebnis ist immer wieder kommt, dann nein, LIMIT wird es nicht schneller machen. Wenn es gibt eine Menge von Ergebnissen, und Sie brauchen nur das erste Ergebnis, und es gibt keine GROUP oder ORDER BY-Anweisungen dann LIMIT wird es schneller machen.

Die Antwort, kurz gesagt, ja. Wenn Sie Ihr Ergebnis auf 1 begrenzen, dann, auch wenn Sie „erwarten“ ein Ergebnis sind, wird die Abfrage schneller, weil die Datenbank wird nicht durch alle aussehen Ihre Unterlagen. Es wird einfach aufhören, sobald es einen Datensatz findet, die Ihrer Suchanfrage entsprechen.

Wenn Sie wirklich nur ein einziges Ergebnis erwarten, es macht wirklich Sinn, die LIMIT auf Ihre Anfrage anhängen. Ich weiß nicht, das Innenleben von MySQL, aber ich bin sicher, es wird nicht nur eine Ergebnismenge von 100'000 + Datensätze sammeln, um es am Ende 1 gestutzt zurück ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top