Cytat(nospor @ 11.02.2010, 13:00:00 )

Po to, by nie przeszukiwał nadaremno całej tabeli po znalezieniu rekordu.No wiesz, potocznie mówią na to "optymalizacja"

Hmmm swego czasu zastanawiałem się jak działa LIMIT, szukałem, ale nie znalazłem odpowiedzi. Bo w zasadzie są 2 możliwości:
1. Pobiera rekordy aż do osiągnięcia LIMIT rekordów i przestaje dalej szukać.
2. Pobiera wszystkie rekordy i zwraca ich LIMIT.
Szczerze mówiąc nie wiem jak to faktycznie jest realizowane, ale skłaniałbym się raczej ku opcji 2. Dlaczego? Bo przecież można pobrać rekordy z określonym OFFSETem. Przyjmując pierwszy wariant działania klauzuli LIMIT ciężko mi sobie uzmysłowić jakby to miało działać - przecież jakoś trzeba określić próg początkowy zwracanych danych. Poza tym: co w sytuacji z użyciem sortowania? Czy byłaby możliwość pobrania X wierszy posortowanych malejąco po danej kolumnie bez wcześniejszego pobrania wszystkich rekordów? W to również wątpię. Tak więc wydaje mi się (ale to tylko moje gdybanie!), że LIMIT wycina określoną liczbę rekordów z wszystkich pobranych. Jeżeli faktycznie tak jest to dodanie LIMIT w tym konkretnym przypadku nie ma nic wspólnego z optymalizacją, a wręcz przeciwnie - niepotrzebnie tworzony jest narzut związany z koniecznością obcięcia zwracanego zbioru danych.
Może ktoś dysponuje w tej kwestii większą wiedzą - byłbym wdzięczny za podzielenie się nią.