2012-08-02 9 views
7

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?

+1

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

+0

@Lamak: tak, masz rację ... Zapomniałem wspomnieć, że miałem na myśli przewagę, by sprawdzić, czy wpis istnieje ... – Chris

Odpowiedz

12

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 
); 
+0

doskonałe wyjaśnienie, dokładnie to, co chciałem wiedzieć! bardzo dziękuję Michael! :) – Chris

Powiązane problemy