Добавить в корзинуПозвонить
Найти в Дзене
Машинное обучение

⚡️ Редкий SQL-прием: EXISTS часто лучше, чем COUNT(*) > 0

Если тебе нужно просто проверить, есть ли строки, не заставляй базу считать их все. Плохо: SELECT COUNT(*) > 0 FROM orders WHERE user_id = 42; База может пройти по всем подходящим строкам, чтобы посчитать количество. Лучше: SELECT EXISTS ( SELECT 1 FROM orders WHERE user_id = 42 ); EXISTS останавливается сразу, как только нашел первую подходящую строку. Для больших таблиц это может быть заметно быстрее, особенно если есть индекс по условию: CREATE INDEX idx_orders_user_id ON orders(user_id); Если тебе нужен ответ “есть или нет”, используй EXISTS. COUNT(*) оставь для случаев, когда реально нужно точное количество строк. #sql #postgresql #database #backend

⚡️ Редкий SQL-прием: EXISTS часто лучше, чем COUNT(*) > 0

Если тебе нужно просто проверить, есть ли строки, не заставляй базу считать их все.

Плохо:

SELECT COUNT(*) > 0

FROM orders

WHERE user_id = 42;

База может пройти по всем подходящим строкам, чтобы посчитать количество.

Лучше:

SELECT EXISTS (

SELECT 1

FROM orders

WHERE user_id = 42

);

EXISTS останавливается сразу, как только нашел первую подходящую строку. Для больших таблиц это может быть заметно быстрее, особенно если есть индекс по условию:

CREATE INDEX idx_orders_user_id ON orders(user_id);

Если тебе нужен ответ “есть или нет”, используй EXISTS. COUNT(*) оставь для случаев, когда реально нужно точное количество строк.

#sql #postgresql #database #backend