172 похожих чатов

Всем привет, задался вопросом, есть ли разница по скорости между

select count(*) from table и select count(id) from table ?)

13 ответов

23 просмотра

вроде нет, интересно что другие скажут. А вообще самый лучший способ самому протестить

Это разные запросы. Если в столбце id будут встречаться null, то результат будет отличаться

Павел- Автор вопроса
Nick Nalbantov
Это разные запросы. Если в столбце id будут встреч...

ну если учесть, что id - это PK not null то count(*) / count(id) это одно и то же и разница только в написании?

Павел
ну если учесть, что id - это PK not null то count(...

В PG count(PK) вроде всё равно делает seq scan, а не PK-индекс читает (в Oracle вроде так было, давно не проверял), так что разница будет околонулевая, скорее всего. Зато точно не стоит делать в PG count(1) и т.п. - это 100% будет медленнее, чем count(*), потому что PG честно парсит, подставляет в каждую строку и проверяет на null выражение в count. В других СУБД это не всегда так, в Oracle count(1) и count(*) - синонимы.

см. https://www.postgresql.org/message-id/flat/df354b76-a645-73fc-9645-4508e5291d71%40gmx.net

Nikolay Gladkov
см. https://www.postgresql.org/message-id/flat/df3...

Ну там разница на границе погрешности, если не считать миллионы строк. Но в принципе, я не понимаю, откуда распространилась идея писать count(1). Для подсчета числа строе есть 2 нормальные идиомы: count(*) и count(nullable_field).

Radist
Ну там разница на границе погрешности, если не счи...

почему бы не посчитать миллионы с другой стороны. Tom Lane (вроде, не последний человек) по ссылке подтверждает, что да, они этот момент не оптимизировали

Ну то, что до сих пор никто этого не сделал, говорит о том, что это никому особо не интересно

Radist
Ну то, что до сих пор никто этого не сделал, говор...

тем не менее, в вопросе на цитируемый вопрос ответ есть, и почему бы не делать так, даже разница минимальна, но почему бы ее не использовать

Radist
Ну там разница на границе погрешности, если не счи...

Емнип, в статьях про оптимизацию мускуля из нулевых такое встречалось. Типа такого: https://web.archive.org/web/20080228084946/http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/

Евгений Смирнов
Емнип, в статьях про оптимизацию мускуля из нулевы...

Да это старые мифы все, oracle вообще count(1) к count(*) при выполнении преобразует 😂

Konstantin Zaitsev
Да это старые мифы все, oracle вообще count(1) к c...

Старые - да, хоть и не совсем мифы, но вроде других источников этой практики не наблюдается.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта