Re: Думы по поводу count(*)
От | Ivan Zolotukhin |
---|---|
Тема | Re: Думы по поводу count(*) |
Дата | |
Msg-id | 751e56400803071400u6c0e9b53tc41a1342d1fa0737@mail.gmail.com обсуждение исходный текст |
Ответ на | Думы по поводу count(*) (Kuzma Feskov <kuzma@russofile.ru>) |
Список | pgsql-ru-general |
2008/3/7 Kuzma Feskov <kuzma@russofile.ru>: > прочитал кучу материала на сей счет. в частности про рекомендации > уважаемого sad Spirit'a. Он там рекомендует пользоваться результатами > analyse или написать тригеры. наверное, имеется в виду не analyze, а explain? > Но все это подходит к линейным запроса, без условий. а таких запросов > единицы. Как вы боретесь с тормознутостью count(*) если в запросе > есть условия, например посчитать все записи, у которых нет пометки > is_deleted? или например count(*) + JOIN? не верно. для запросов с условиями приблизительная оценка из explain-а подходит, попробуйте сами. не забывайте только делать analyze и/или не отключайте autovacuum. для джойнов тоже должно работать, но нужно исследовать. мы используем подсчет кол-ва рядов не через count(*), а через explain, уже в нескольких крупных проектах и полностью довольны этим методом. триггер имеет смысл использовать только если необходимо знать абсолютно точное значение, в подавляющем большинстве сложных случаев приблизительной оценки достаточно.
В списке pgsql-ru-general по дате отправления: