PGSQL версия 14
Есть таблица Documents и таблица Search (в ней лежат данные для поиска по Documents).
Связь между таблицами Documents 1-> N Search. Таблицы связаны по полям RootId (ид. корня документа) и Id (идентификатор записи документа).
Есть один документ, где все названия записей начинаются со строки «1.2», записей таких 110K+.
При поиске по этой строке план запроса получается плохой, PG достает все записи и сортирует их, это занимает время и shared hit\shared read
select
s."FullName", s."Id"
FROM
"Documents" s
inner join "Search" k on (k."RootId" = s."RootId" and k."Id" = s."Id")
where
k."Name" is true AND
k."Item" iLIKE '1.2%' AND
k."RootId" = 111
ORDER by
s."FullName"
limit 40
но если из запроса убрать условие k.«Item» iLIKE ‘1.2%’
select
s."FullName", s."Id"
FROM
"Documents" s
inner join "Search" k on (k."RootId" = s."RootId" and k."Id" = s."Id")
where
k."Name" is true AND
k."RootId" = 111
ORDER by
s."FullName"
limit 40
то PG начинает использовать Incremental Sort, достает только 40 записей уже отсортированных и план становится намного лучше.
Вопрос: почему PG может не использовать Incremental Sort, и как помочь ему это сделать?

