This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ 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
Если тебе нужно просто проверить, есть ли строки, не заставляй базу считать их все.
Плохо:
База может пройти по всем подходящим строкам, чтобы посчитать количество.
Лучше:
EXISTS останавливается сразу, как только нашел первую подходящую строку. Для больших таблиц это может быть заметно быстрее, особенно если есть индекс по условию:
Если тебе нужен ответ “есть или нет”, используй EXISTS. COUNT(*) оставь для случаев, когда реально нужно точное количество строк.
#sql #postgresql #database #backend
Если тебе нужно просто проверить, есть ли строки, не заставляй базу считать их все.
Плохо:
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
👍9❤4🔥2