as substr,
count(*)
from contractor
group BY
substring(inn from 1 for 4)
;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------
GroupAggregate (cost=2295677.45..2434672.60 rows=2411036 width=12)
Group Key: ("substring"((inn)::text, 1, 4))
-> Sort (cost=2295677.45..2331963.18 rows=14514294 width=12)
Sort Key: ("substring"((inn)::text, 1, 4))
-> Index Only Scan using contractor_idx on contractor (cost=0.56..427389.71 rows=14514294 width=12)
(5 rows)
Не понимаю, как-то можно подсказать pg, чтобы сортировка в таком запросе не делалась? просто contractor_idx уже итак содержит отсортированные по inn данные.
Видимо PG не понимает, что я prefix пытаюь взять, а не середину.
А если explain analyze?
У меня вопрос про не тот план, который я ожидаю. Analyze добавит циферки привязанные к реально выполняемому запросу, но план запроса не поменяет.
Explain (verbose,analyze,buffers) накрути потом индексов потом сделай аналайз таблиц! потом снова п.1
Обсуждают сегодня