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