2 Stimmen

Wann wird LIMIT angewendet? Werden alle Ergebnisse vor der Begrenzung ausgewählt?

Ich mache mir Sorgen über die Leistung einer Abfrage wie der folgenden SELECT * FROM user LIMIT 5 für eine sehr große Benutzertabelle. Wird es alle Datensätze auswählen und dann auf 5 beschränken?

Genauer gesagt, wird die folgende Abfrage alle assetids vor der Einschränkung auswählen...

SELECT * FROM assets WHERE asset_id IN(1,2,3,4,5,6,7,8,9,10) LIMIT 5

Mir ist klar, dass es nicht sinnvoll ist, alle ids in die IN() Klausel, wenn ich einschränke, aber ich würde gerne wissen, wie mysql in dieser Situation verhält.

Gracias.

1voto

Matt MacLean Punkte 18554

Dies hängt von Ihrer Anfrage ab. Auf dieser Seite finden Sie weitere Erläuterungen zur Anwendung von LIMIT: http://dev.mysql.com/doc/refman/5.0/en/limit-optimization.html

Für diese spezielle Abfrage würde Folgendes gelten: "Sobald MySQL die erforderliche Anzahl von Zeilen an den Client gesendet hat, bricht es die Abfrage ab, es sei denn, Sie verwenden SQL_CALC_FOUND_ROWS."

Ich hoffe, das hilft.

0voto

vonPetrushev Punkte 5109

Ihre Abfrage muss alle Zeilen nach asset_id Spalte, so dass Sie besser einen Index für sie haben. Nach meiner Erfahrung sollten Sie immer einen order by Klausel auch, da die Ergebnismenge intern sein wird (d.h. Reihenfolge unbekannt), und Sie würden nicht wissen, warum die zurückgegebenen 5 Ergebnisse die waren, die Sie eigentlich wollten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X