Антон Долганин

Я инженер, который решает задачи, а не пишет на языке. Архитектура, разработка, DevOps — подбираю инструменты под цель, строю решения, которые работают в проде и масштабируются без боли.

Пишешь фильтрацию так?

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;

Работает надежнее, быстрее и предсказуемо.

PostgreSQL: NOT IN может тебя подставить