Существует несколько обсуждений этого и там (включая официальный пост в сети postgres) о медленном подсчете (*) предыдущей версии 9.2; как-то я не нашел удовлетворенного ответа.Медленный счет (*) on postgresql 9.2
В основном я был Postgres установлен 9,1, и я наблюдал медленное COUNT (*), как просто, как
select count(*) from restaurants;
таблиц с записями 100k +. Средний запрос составляет около 850 мс. Хорошо, я предположил, что это был тот симптом, о котором люди говорили за медленный подсчет постгрейсов 9.1 и ниже, поскольку postgres 9.2 имеет некоторые новые функции, такие как только для индексации. Я хочу поэкспериментировать, используя тот же набор данных из 9.1 и поместив его на 9.2. Я вызываю счетчик, и он все равно дает плохой результат как 9.1.
explain analyze select count(*) from restaurants;
------------------------------------------------------------------
Aggregate (cost=23510.35..23510.36 rows=1 width=0) (actual time=979.960..979.961 rows=1 loops=1)
-> Seq Scan on restaurants (cost=0.00..23214.88 rows=118188 width=0) (actual time=0.050..845.097 rows=118188 loops=1)
Total runtime: 980.037 ms
Может ли кто-нибудь предложить приемлемое решение этой проблемы? Нужно ли настраивать что-либо в postgres, чтобы включить эту функцию?
P.S. , где статья также не помогает в моем случае.
Вы читали https://wiki.postgresql.org/wiki/Index-only_scans? Там обсуждается «счет» и ограничения вокруг него. Есть ли первичный ключ в этой таблице? Вы «ВАКУУМ» и «АНАЛИЗ» стол после загрузки данных? –
Кроме того, что вы задали для 'random_page_cost' и' seq_page_cost'? Как насчет 'effective_cache_size'? –
Спасибо Крэйгу за ссылку. Я прочитал его и сделал ВАКУУМ, как вы предложили, и как-то он улучшает скорость от 850 мс до 400 мс. Еще 400 мс - дорогое время. Есть ли какие-то дополнительные настройки, чтобы уточнить это? – Ream