Lists: | Postg스포츠 토토 사이트SQL |
---|
From: | Kuzma Feskov <kuzma(at)russofile(dot)ru> |
---|---|
To: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Думы по поводу count(*) |
Date: | 2008-03-07 13:08:52 |
Message-ID: | 1204895332.6355.7.camel@Feskov |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | Postg스포츠 토토 사이트SQL |
прочитал кучу материала на сей счет. в частности про рекомендации
уважаемого sad Spirit'a. Он там рекомендует пользоваться результатами
analyse или написать тригеры.
Но все это подходит к линейным запроса, без условий. а таких запросов
единицы. Как вы боретесь с тормознутостью count(*) если в запросе
есть условия, например посчитать все записи, у которых нет пометки
is_deleted? или например count(*) + JOIN?
From: | "Ivan Zolotukhin" <ivan(dot)zolotukhin(at)gmail(dot)com> |
---|---|
To: | kuzma(at)russofile(dot)ru |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Думы по поводу count(*) |
Date: | 2008-03-07 22:00:08 |
Message-ID: | 751e56400803071400u6c0e9b53tc41a1342d1fa0737@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-ru-general |
2008/3/7 Kuzma Feskov <kuzma(at)russofile(dot)ru>:
> прочитал кучу материала на сей счет. в частности про рекомендации
> уважаемого sad Spirit'a. Он там рекомендует пользоваться результатами
> analyse или написать тригеры.
наверное, имеется в виду не analyze, а explain?
> Но все это подходит к линейным запроса, без условий. а таких запросов
> единицы. Как вы боретесь с тормознутостью count(*) если в запросе
> есть условия, например посчитать все записи, у которых нет пометки
> is_deleted? или например count(*) + JOIN?
не верно. для запросов с условиями приблизительная оценка из explain-а
подходит, попробуйте сами. не забывайте только делать analyze и/или не
отключайте autovacuum. для джойнов тоже должно работать, но нужно
исследовать.
мы используем подсчет кол-ва рядов не через count(*), а через explain,
уже в нескольких крупных проектах и полностью довольны этим методом.
триггер имеет смысл использовать только если необходимо знать
абсолютно точное значение, в подавляющем большинстве сложных случаев
приблизительной оценки достаточно.