2016-01-15 18 views

Odpowiedz

2

Jeśli nie używasz BY wtedy nie sortuje twoich rekordów, więc zdecydowanie przyspieszy pobieranie danych. Więc jeśli po prostu użyjesz LIMIT, będzie to szybsze w porównaniu do danych pobranych przez ORDER BY. Należy jednak pamiętać, że w takim przypadku dane nie będą miały żadnej kolejności.

Jeśli chodzi o bezpieczeństwo, nie jestem pewien co do bezpieczeństwa, o którym myślisz, ponieważ nie ma potencjalnej szkody w zapytaniu, które używa tylko LIMIT i nie używa klauzuli ORDER BY.

Można również spojrzeć na artykuł: ORDER BY … LIMIT Performance Optimization

1

Tak, możesz i tak, byłoby to szybciej (zakładając, że kolejność nie ma znaczenia dla ciebie). order by wymaga sortowania. Oznacza to, że baza danych musi wykonać więcej pracy, aby uzyskać wynik. Najczęściej limit jest używany z order by ponieważ chcesz umieścić pewne ograniczenia zamawiania na który 10 rekordy dostać (słownie najnowszą, najwyższą rangę jakimś itd)

1

To zależy, co uważasz za, sejf, jeśli chcesz spójny wynik (meanning, otrzymuję ten sam rezultat za każdym razem tak długo, jak zawartość tabeli nie ulegnie zmianie), czy chcesz konkretny wynik (biggesty, najnowsze, najstarsze, cokolwiek) - to wymaga zamówienia. Jeśli dla bezpieczeństwa mówisz, że zapytanie nie zostanie zmiażdżone i nie dbasz o to, które wyniki X uzyskasz - niż tak, użycie limitu jest w porządku (jest to faktycznie wykonywane automatycznie przez wiele narzędzi sql, takich jak mysql workbench, aby przyspieszyć działanie).

Pod względem Speed-będzie to niszczyciel bez celu z dwóch powodów:

  1. Zamawiający wymaga czasu.
  2. Korzystanie z limitu pozwala serwerowi zatrzymać się, gdy znajdzie pierwsze wyniki X. Możesz zobaczyć, że zapytania z limit 10 będą działać szybciej niż limit 100000 na dużych tabelach. Kiedy używasz zamówienia, serwer musi przejść przez wszystkie wyniki, więc nie może zatrzymać się w środku.

Więc tak, aby za pomocą limitu bez pozwoli szybciej

0

The 3 odpowiedzi do tej pory są dobre. Ale nie są one całkowicie poprawne.

przeciwieństwie do innych odpowiedzi, czasami pomijając ORDER BY będzie nie zrobić to szybciej. Optymalizator może i tak wygenerować wiersze w tej kolejności. Przykłady:

  • GROUP BY zwykle zamawia wyniki. Tak więc, jeśli ORDER BY będzie pasować do GROUP BY, nie ma dodatkowego wysiłku.
  • ORDER BY the_primary_key może odpowiadać kolejności pobierania. Jest to prawie zagwarantowane w przypadku InnoDB bez klauzuli WHERE.

"Bezpieczny" nie jest obliczany.

Powiązane problemy