2011-11-16 13 views
10

Chciałbym wiedzieć, jak zmaksymalizować prędkość podczas kwerendy o obecność wartości varchar w kolumnie w określonej tabela. Nie muszę wiedzieć, gdzie to jest ani ile jest ich wystąpień, po prostu chcę mieć true/false. Oczywiście kolumna ma indeks.Sprawdź wartość, jeśli istnieje w kolumnie

Teraz ma to:

SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1); 
+0

Aby sprawdzić, czy nazwa kolumny istnieje, patrz http://stackoverflow.com/a/10636439/287948 –

Odpowiedz

13

EXISTS powinien normalnie jak najszybciej przywrócić podkwerendę znajdzie wiersz spełniającą jego gdzie zapis. Myślę więc, że twoje zapytanie jest tak szybkie, jak tylko możesz.

Byłem trochę zaskoczony, że LIMIT 1 wydaje się zawsze bardzo przyspieszyć zapytanie. Nie spodziewałem się tego. Efekt można zobaczyć za pomocą EXPLAIN ANALYZE.

EXPLAIN ANALYZE 
SELECT exists (SELECT 1 FROM table WHERE column = <value> LIMIT 1); 
+0

Może mi pan powiedzieć, jak kwerendy jest powszechnie stosowane do tego (sprawdzić czy istnieje z max prędkością) – Perlos

Powiązane problemy