© Anton Dolganin 2025
Пишешь фильтрацию так?
SELECT * FROM orders
WHERE customer_id NOT IN (SELECT id FROM banned_customers);
На маленьком датасете все быстро. А на проде — тормозит.
Почему? Если banned_customers.id содержит хотя бы один NULL
, весь NOT IN
проваливается — и оптимизатор путается. Запрос теряет производительность.
Как лучше:
SELECT * FROM orders o
LEFT JOIN banned_customers b ON o.customer_id = b.id
WHERE b.id IS NULL;
Работает надежнее, быстрее и предсказуемо.
© Anton Dolganin 2025