Witam.
Pytanie może banalne.. ale jak tak się dłużej zastanawiam czy może jednak nie takie banalne.
Przykładowo mam tabele "user", która ma 50 000 wierszy.
W momencie gdy użytkownik się loguje to jest zapytanie
select * from user where login = jan_kowalski"";
Czyli loguje usera o loginie "jan_kowalski".
Wiadomo że w bazie jest tylko jeden taki wiersz o loginie "jan_kowalski" więc jak stworze zapytanie:
select * from user where login = jan_kowalski" LIMIT 1";
to ten LIMIT ograniczy obciążenie wyszukiwania z bazy do 1 pozycji ? czy to będzie dokładnie takie same obciążenie jak bez LIMITu ?
trueblue
10.10.2015, 10:48:30
Zmniejszy, bo po znalezieniu jednego rekordu spełniającego warunek nie będą przeszukiwane pozostałe.
Pyton_000
10.10.2015, 10:50:28
TL;DR
Jesli masz index to nie zobaczysz różnicy, jeśli nie masz to różnica będzie duża.
Z LIMIT teoretycznie będzie szybciej (jeśli masz klucz na login to będzie to mikro optymalizacja)
LIMIT w tym przykładzie zadziała tak że po znalezieniu pierwszego rekordu następuje przerwanie operacji i zwrócenie rekordu.
Jednak przy wyszukiwaniu pola z indeksem to i tak nie będzie miało większego znaczenia.
dzięki.. właśnie o takie potwierdzenie mi chodziło
maly_swd
10.10.2015, 20:36:49
Jak na login dasz INDEX UNIKALNY to będzie szybciej i nie będzie trzeba dawać LIMIT
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.