Dziś bardzo krótko, tak tylko w ramach przypomnienia dla tych, którzy śledzą bloga od niedawna i nie przeglądali archiwalnych postów. Lista IN() – wygodna konstrukcja, która zazwyczaj jest szybka i wydajna. Problem pojawia się w momencie, gdy zamiast listy argumentów do IN() wrzucimy podzapytanie. Dlaczego to jest złe, pisałem dokładnie w tym poście:

Lista IN() i podzapytania

Wspominam o tym ponownie, bo po raz kolejny miałem okazję widzieć serwer umierający pod naporem tego typu zapytań. Zapytań, które można stosunkowo prosto przepisać i które mogą być wydajne. Tyle tylko że w trochę innej postaci niż ta najbardziej „logiczna” z punktu widzenia SQL i programisty. Pamiętajmy o tym że optimizer MysQL nie koniecznie jest logiczny. Aby pisać wydajne zapytania trzeba znać jego mocne i słabe strony, nie wystarczy napisać poprawny kod SQL.