Pytanie powinno być wystarczająco jasne, ale jest to z korzyścią dla każdej wykorzystać zamiastCzy ma sens stosowanie "LIMIT 1" w zapytaniu "SELECT 1 ..."?
SELECT 1 FROM table ...
SELECT 1 FROM table ... LIMIT 1
?
Pytanie powinno być wystarczająco jasne, ale jest to z korzyścią dla każdej wykorzystać zamiastCzy ma sens stosowanie "LIMIT 1" w zapytaniu "SELECT 1 ..."?
SELECT 1 FROM table ...
SELECT 1 FROM table ... LIMIT 1
?
Załóżmy, że stół ma milion wierszy ...
SELECT 1 FROM table ...
zwróci wartość 1
, milion razy ...
SELECT 1 FROM table ... LIMIT 1
zwróci wartość 1
, jeden raz.
EDIT
można wspomnieć, że jesteś szczególnie zainteresowany w odniesieniu do odprawy EXISTS
. EXISTS
zatrzymuje przetwarzanie po pierwszym rzędzie znajduje się (co jest dlaczego EXISTS
jest bardziej efektywne niż IN
w tym przypadku), więc mając to na uwadze, nie jest funkcjonalna różnica pomiędzy tymi dwoma zapytaniami:
SELECT *
FROM tableA ta
WHERE EXISTS (
SELECT 1
FROM TableB tb
WHERE tb.ID = ta.ID
);
I
SELECT *
FROM tableA ta
WHERE EXISTS (
SELECT 1
FROM TableB tb
WHERE tb.ID = ta.ID
LIMIT 1
);
doskonałe wyjaśnienie, dokładnie to, co chciałem wiedzieć! bardzo dziękuję Michael! :) – Chris
To są 2 bardzo różne rzeczy. Pierwsze zapytanie spowoduje wyszukanie "1" dla każdego rekordu twojego stołu, a drugie zwróci tylko jeden rekord. Czy jest więc jakaś zaleta zamiast drugiej ?, nie, ponieważ nie są one porównywalne – Lamak
@Lamak: tak, masz rację ... Zapomniałem wspomnieć, że miałem na myśli przewagę, by sprawdzić, czy wpis istnieje ... – Chris