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

Есть две базы - MS SQL и postgree. Структуры абсолбтно идентичные, до назания индексов и даже регистра. После миграции данных

Код: sql
1.
select count(*) from "Contract"


К примеру на MS SQL идет несколько секунд (59 млн записей), на Postrge несколько минут. В чем может быть причина? Так со всеми таблицами.
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985614
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Agafonov,

"железо" по производительности сопоставимо?
планы запросов чего показывают?
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985621
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey AgafonovВсем привет.

Есть две базы - MS SQL и postgree. Структуры абсолбтно идентичные, до назания индексов и даже регистра. После миграции данных

Код: sql
1.
select count(*) from "Contract"


К примеру на MS SQL идет несколько секунд (59 млн записей), на Postrge несколько минут. В чем может быть причина? Так со всеми таблицами.
абсолютно ли одинаковы структуры? кластерные индексы никто не отменял. Плюс размер кэша - что в мс влезло, в pg может не влезть.
Ну и планы в студию!
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985728
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В планах PG я плохо разбираюсь, есть что-то подробнее, чем этот? Вот они.
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985730
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985732
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985742
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
CREATE NONCLUSTERED INDEX [IX_Contact__SupplierUid] ON [dbo].[Contact]
(
	[SupplierUid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985749
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey AgafonovВ планах PG я плохо разбираюсь, есть что-то подробнее, чем этот? Вот они.

Тут видно фулскан, а в мсскл индекс используется.
ЗЫ. Про "поподробнее" - см. explain
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985774
Alexey Agafonov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал. Интересно то, что ни JSON ни XML форматы ничего не дают (. Пусто. В обычный вот

Код: sql
1.
EXPLAIN select cast('Contact' as varchar(255)) n, cast(count(*) as bigint) cnt from "Contact";


Код: plaintext
1.
2.
"Aggregate  (cost=55606.51..55606.52 rows=1 width=0)"
"  ->  Seq Scan on "Contact"  (cost=0.00..50447.61 rows=2063561 width=0)"
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985784
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirТут видно фулсканА хотя он тут и должен быть, идеология-то не поменялась:
https://wiki.postgresql.org/wiki/Slow_Counting
http://www.quora.com/How-can-I-optimize-count-queries-in-PostgreSQL
http://postgresql.nabble.com/Why-count-doest-use-index-tp3408241p3411320.html
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985903
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Agafonov
Код: sql
1.
2.
3.
4.
CREATE NONCLUSTERED INDEX [IX_Contact__SupplierUid] ON [dbo].[Contact]
(
	[SupplierUid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)



index only scan появился в пг недавно - погуглите версию с которой и сравните со своей.
А еще различие - мсскл индексирует null значения, а остальные субд (и пг в том числе) нет.
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985936
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey AgafonovВсем привет.

Есть две базы - MS SQL и postgree. Структуры абсолбтно идентичные, до назания индексов и даже регистра. После миграции данных

Код: sql
1.
select count(*) from "Contract"


К примеру на MS SQL идет несколько секунд (59 млн записей), на Postrge несколько минут. В чем может быть причина? Так со всеми таблицами.

count(*) в postgres при выполнении пересчитывает все строки в таблице и эту проблемы вы не решите.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985943
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakА еще различие - мсскл индексирует null значения, а остальные субд (и пг в том числе) нет.

Как интересно а откуда вы это взяли про PostgreSQL?
На всякий случай для читателей - PostgreSQL индексирует NULL's и делает это лет 10 последних минимум если не 15.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985947
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кто бы мне обьяснил смысл частого и быстрого выполнения count(*) по таблице с миллионами записей?
Ну вот хоть одну реальную задачу которую этим можно решить напишите.
Я за 15 лет ни одной не видел.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985956
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukВот кто бы мне обьяснил смысл частого и быстрого выполнения count(*) по таблице с миллионами записей?
Ну вот хоть одну реальную задачу которую этим можно решить напишите.
Я за 15 лет ни одной не видел.

--
Maxim Boguk
www.postgresql-consulting.ru
ETL тулзы иногда такие затейники - вот мой например генерит на каждую времянку select count(*).
...
Рейтинг: 0 / 0
count(*) идет крайне медленно
    #38985959
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukIvan DurakА еще различие - мсскл индексирует null значения, а остальные субд (и пг в том числе) нет.

Как интересно а откуда вы это взяли про PostgreSQL?
На всякий случай для читателей - PostgreSQL индексирует NULL's и делает это лет 10 последних минимум если не 15.

--
Maxim Boguk
www.postgresql-consulting.ru
с ораклом спутал, пардон!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / count(*) идет крайне медленно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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