powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / count(1) vs count(*)
7 сообщений из 7, страница 1 из 1
count(1) vs count(*)
    #34129155
mt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mt
Гость
Возник вопрос следующий вопрос:

Что будет работать быстрей count(1) или count(*). На малых объемах я думаю разница заметна не будет (если она будет).

Растолкуйте пожалуйста, по подробней - так это или нет.

P.S. Прошу не смеять и не пинать, т.к. сам сам работаю на других БД, а братцу count(1) тыкают как не правильность.
...
Рейтинг: 0 / 0
count(1) vs count(*)
    #34129818
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разницы между count(1) и count(*) нет, ни в производительности, ни в результате. А с count(field) разница есть, и в результате (если есть записи field is null), и немного в производительности, из-за ненулевой длины строки "width".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
nw=# explain analyze select count(*) from plprice_01;
                                                        QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost= 54019 . 68 .. 54019 . 69  rows= 1  width= 0 ) (actual time= 1619 . 486 .. 1619 . 487  rows= 1  loops= 1 )
   ->  Seq Scan on plprice_01  (cost= 0 . 00 .. 52120 . 74  rows= 759574  width= 0 ) (actual time= 0 . 056 .. 1293 . 583  rows= 759574  loops= 1 )
 Total runtime:  1619 . 561  ms
( 3  rows)

nw=# explain analyze select count( 1 ) from plprice_01;
                                                        QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost= 54019 . 68 .. 54019 . 69  rows= 1  width= 0 ) (actual time= 1621 . 957 .. 1621 . 957  rows= 1  loops= 1 )
   ->  Seq Scan on plprice_01  (cost= 0 . 00 .. 52120 . 74  rows= 759574  width= 0 ) (actual time= 0 . 055 .. 1295 . 269  rows= 759574  loops= 1 )
 Total runtime:  1622 . 050  ms
( 3  rows)

nw=# explain analyze select count(prod) from plprice_01;
                                                         QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------
 Aggregate  (cost= 54019 . 68 .. 54019 . 69  rows= 1  width= 274 ) (actual time= 1743 . 913 .. 1743 . 913  rows= 1  loops= 1 )
   ->  Seq Scan on plprice_01  (cost= 0 . 00 .. 52120 . 74  rows= 759574  width= 274 ) (actual time= 0 . 053 .. 1303 . 199  rows= 759574  loops= 1 )
 Total runtime:  1743 . 987  ms
( 3  rows)
...
Рейтинг: 0 / 0
count(1) vs count(*)
    #34130222
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mt
Что будет работать быстрей count(1) или count(*). На малых объемах я думаю разница заметна не будет (если она будет).

V PostgreSQL 8.1 i ranshe count(*) fakticheski na urovne servera zamenialsia na count(1). Seichas je v PG 8.2 facticheski on ispolniaetsia, kak count()... Poetomu teoreticheski count(*) seichas doljen byt' chut' bystree count(1). No raznitsa minimalna (ne znau voobshe mojno li ee zametit' bez ochen' dolgih testov).
...
Рейтинг: 0 / 0
count(1) vs count(*)
    #34130552
mt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mt
Гость
Спасибо за информацию.
А какие нибудь ссылки на документацию или тому подобное, где про это написано?
...
Рейтинг: 0 / 0
count(1) vs count(*)
    #34131412
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mtСпасибо за информацию.
А какие нибудь ссылки на документацию или тому подобное, где про это написано?

http://groups.google.com/group/pgsql.committers/browse_frm/thread/3dbf6a2c353c7280/bb17d156d0e58a85?lnk=gst&rnum=1#bb17d156d0e58a85
...
Рейтинг: 0 / 0
count(1) vs count(*)
    #34132117
mt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mt
Гость
еще раз всем спасибо.
СергейК, спасибо за ссылку
...
Рейтинг: 0 / 0
count(1) vs count(*)
    #34139549
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СергейК mt
Что будет работать быстрей count(1) или count(*). На малых объемах я думаю разница заметна не будет (если она будет).
Seichas je v PG 8.2 facticheski on ispolniaetsia, kak count()... Poetomu teoreticheski count(*) seichas doljen byt' chut' bystree count(1). No raznitsa minimalna (ne znau voobshe mojno li ee zametit' bez ochen' dolgih testov).

Reshil proverit' naskolko sil'nyi etot effect. I vot rez-t (na 3millionnoi tablichke) v PG8.2beta3: count(1) ~ na 7% medlennee count(*) (posle 100 testov). Na 8.1 estesvenno raznitsy v skorosti net...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / count(1) vs count(*)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]