Bartosz Ratajczyk MS SQL Developer
Temat: [MySQL] Jak inaczej napisać LEFT JOINa z warunkiem IS NULL
Zadanie: wybrać z tabeli klienci pięciu klientów, którzy nie znajdują się w tabeli wynikiNiech:
klienci (nr_tel, reszta_danych) ~ 1.5 mln rekordów
wyniki (nr_tel, status, reszta_danych) ~60 tys rekordów
Standardowo:
SELECT
klienci.nr_tel
FROM klienci
LEFT JOIN wyniki ON klienci.nr_tel = wyniki.nr_tel
WHERE
wyniki.status IS NULL
LIMIT 5;
Ale strasznie się to ślimaczy, bo z tego co pokazuje EXPLAIN SELECT nie są wykorzystywane w tym zapytaniu indeksy na kolumnach nr_tel (jeśli warunek jest w stylu wyniki.status = 1 to indeksy są wykorzystywane). Czy da się to jakoś zgrabnie przepisać, żeby to przyspieszyło?