История изменений
Исправление
Legioner,
(текущая версия)
:
Какое принципиальное отличие данных о количестве записей в таблице от данных в самой таблицы?
Отличие от записи в одном столбце или от всех записей в таблице? count(*) это агрегат по всей таблице. Он зависит от всех записей в таблице. Разные транзакции как правило работают с разными записями и нет проблем проводить их одновременно. Если одна транзакция захочет работать со всей таблицей (а это как раз случай count(*)), то проблемы с параллельностью других транзакций будут.
Вторые ведь как-то нормально работают с изоляцией транзакций.
Ну и count(*) нормально работает в Postgres. Претензия была к тому, что эта операция не работает достаточно быстро. sum(field) тоже не будет работать достаточно быстро, если на то пошло. Честно говоря у меня вообще сомнения в том, что в постгресе с этим есть какие-то проблемы. План такой:
-> Index Only Scan using table_pkey on table
Куда уж быстрей, чем посмотреть на индекс?
Исходная версия
Legioner,
:
Какое принципиальное отличие данных о количестве записей в таблице от данных в самой таблицы?
Отличие от записи в одном столбце или от всех записей в таблице? count(*) это агрегат по всей таблице. Он зависит от всех записей в таблице. Разные транзакции как правило работают с разными записями и нет проблем проводить их одновременно. Если одна транзакция захочет работать со всей таблицей (а это как раз случай count(*)), то проблемы с параллельностью других транзакций будут.
Вторые ведь как-то нормально работают с изоляцией транзакций.
Ну и count(*) нормально работает в Postgres. Претензия была к тому, что эта операция не работает достаточно быстро. sum(field) тоже не будет работать достаточно быстро, если на то пошло.