Ist es sicher, LIMIT ohne ORDER BY zu verwenden?

8

Ich verwende InnoDB. Ich muss abfragen, um 10 Datensätze aus einer Tabelle ist eine Bestellung.

Ist es sicher, LIMIT ohne ORDER BY zu verwenden? Wäre es schneller?

    
Code 15.01.2016, 13:41
quelle

4 Antworten

1

Wenn Sie ORDER BY nicht verwenden, sortieren Sie Ihre Datensätze nicht, so dass Ihre Daten schneller abgerufen werden können. Wenn Sie also einfach LIMIT verwenden, wäre es schneller als die Daten, die über ORDER BY abgerufen werden. Aber beachte, dass in diesem Fall die Daten nicht in einer bestimmten Reihenfolge sind.

Soweit es die Sicherheit betrifft, bin ich nicht sicher, an welche Sicherheit Sie denken, da es in einer Abfrage, die nur LIMIT verwendet und keine ORDER BY-Klausel verwendet, keinen potentiellen Schaden gibt.

Sie können sich auch den Artikel ansehen: ORDER BY ... LIMIT Leistungsoptimierung

    
Rahul Tripathi 15.01.2016, 13:48
quelle
1

Ja, Sie können und ja, es wäre schneller (vorausgesetzt, die Reihenfolge ist Ihnen egal). order by erfordert das Sortieren. Dies bedeutet, dass die Datenbank mehr Arbeit leisten muss, um das Ergebnis zu erhalten. Am häufigsten wird limit mit order by verwendet, da einige Ordnungseinschränkungen auf gesetzt werden sollen, welche 10 Datensätze Sie erhalten (sagen Sie den neuesten, höchsten Rang irgendeiner Art, etc.)

    
leeor 15.01.2016 13:43
quelle
1

Es hängt davon ab, was Sie für sicher halten - wenn Sie ein konsistentes Ergebnis wünschen (dh das gleiche Ergebnis erhalten, solange sich der Inhalt der Tabelle nicht ändert) oder ein bestimmtes Ergebnis (groß, neu, alt, was auch immer) als dies erfordert Reihenfolge. Wenn Sie sicher sind, dass die Abfrage nicht verknallt wird, und es Ihnen egal ist, welche X-Ergebnisse Sie erhalten, dann ist die Verwendung von Limit in Ordnung (dies wird automatisch von vielen SQL-Tools wie mysql workbench durchgeführt, um die Dinge zu beschleunigen) / p>

Was die Geschwindigkeit anbelangt, so wird es aus zwei Gründen zu einer Verschwendung führen:

  1. Bestellung braucht Zeit.
  2. Mit limit kann der Server gestoppt werden, wenn er die ersten X-Ergebnisse findet. Sie können sehen, dass Abfragen mit limit 10 in großen Tabellen schneller ausgeführt werden als limit 100000 . Wenn Sie die Reihenfolge verwenden, muss der Server alle Ergebnisse durchlaufen, also kann nicht in der Mitte angehalten werden.

Also, wenn Sie Limit ohne Reihenfolge verwenden, wird es schneller

    
Nir Levy 15.01.2016 14:11
quelle
0

Die 3 Antworten sind bisher gut. Aber sie sind nicht völlig richtig.

Im Gegensatz zu den anderen Antworten macht manchmal es aus wird nicht es schneller machen. Möglicherweise generiert der Optimierer die Zeilen trotzdem in dieser Reihenfolge. Beispiele:

  • ORDER BY ordnet normalerweise die Ergebnisse an. Wenn also GROUP BY mit ORDER BY übereinstimmt, gibt es keinen zusätzlichen Aufwand.
  • GROUP BY stimmt möglicherweise mit der Abrufreihenfolge überein. Dies ist fast garantiert für InnoDB ohne eine ORDER BY the_primary_key -Klausel.

"Sicher" wird nicht berechnet.

    
Rick James 15.01.2016 18:10
quelle

Tags und Links