Mam dwie tabele. Formularze mają ~ 77000 wierszy. Dzienniki mają ~ 2,7 miliona wierszy.Operator SQL "<>" jest bardzo wolny w porównaniu do "=" w tabeli z kilkoma milionami wierszy
Następująca kwerenda zwraca "30198" w mniej niż sekundę:
SELECT COUNT(DISTINCT logs.DOCID) FROM logs, forms WHERE logs.DOCID = forms.DOCID;
I ta kwerenda została uruchomiona przez ~ 15 minut, tak daleko, a jeszcze nie skończył:
SELECT COUNT(DISTINCT logs.DOCID) FROM logs, forms WHERE logs.DOCID <> forms.DOCID;
Dlaczego zapytanie "nie równe" jest znacznie wolniejsze?
Co powiesz na "WHERE NOT logs.DOCID = forms.DOCID"? –
Czy próbujesz znaleźć wartości 'logs.DOCID', dla których nie istnieje odpowiednia wartość w' forms'?Jeśli tak, spróbuj 'WYBIERZ COUNT (*) Z (WYBIERZ DOCID Z logów Z WYJĄTKIEM WYBIERZ DOCID z formularzy) T' –
@Martin - zapytanie wróciło po 8 sekundach. Dzięki! –