Допустим, у меня есть таблица с несколькими ключами, счетами и хитами.Postgres efficiency
Который быстрее? Я думаю, мой вопрос, если Postgres (или любой SQL по этому вопросу) имеет оптимизатор интеллектуальный видеть одинаковые функции в запросе
SELECT key, accounts, hits,1.0*hits/accounts as ratio FROM
(
SELECT key, COUNT(DISTINCT accounts) as accounts, SUM(hits) as hits
FROM table
GROUP BY key
) a;
ИЛИ
SELECT key, COUNT(DISTINCT accounts) as accounts, SUM(hits) as hits, 1.0*SUM(hits)/COUNT(DISTINCT accounts) as ratio
FROM table
GROUP BY key;
Я хотел бы услышать, что вы имеете сказать или ресурсы, которые вы можете предоставить при понимании такого рода вещей. Благодаря!
Не зная таблиц, индексов и данных, это будет очень сложно сказать. Вы пробовали рассказать об этом? http://www.postgresql.org/docs/8.1/static/sql-explain.html – Ken
Зачем нужно объяснение? Вопрос заключается в том, что оптимизатор достаточно умен, чтобы понять, что учетные записи COUNT (DISTINCT) идентичны в двух местах, а также SUM (хиты), и если он будет вычислять каждый один или два раза. –
Если я использую Explain, однако, версия подзапроса немного дешевле (819804 vs 819807) –