powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Индекс для сортировки
5 сообщений из 5, страница 1 из 1
Индекс для сортировки
    #39968737
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица Документы первичный ключ Документ, поле Код типа text.
Есть запрос

Код: sql
1.
2.
3.
4.
5.
6.
SELECT s.*
FROM "Документы" s
where "Документ" = ANY(ARRAY[807830, 807831, 807832, 807833, 807834, 807835, 807836, 807837, 807838, 807839
])
ORDER BY
s."Код"  



Создал индекс
Код: sql
1.
2.
3.
CREATE INDEX "index_sort"
	ON "Документы" USING btree
	("Документ" NULLS LAST, "Код" text_pattern_ops NULLS LAST);



Но почему-то планировщик его не использует, делал VACUUM, REINDEX, используется
индекс по первичному ключу, план такой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
"Sort  (cost=48.74..48.77 rows=10 width=174) (actual time=0.061..0.062 rows=10 loops=1)"
"  Sort Key: "Код"
"  Sort Method: quicksort  Memory: 26kB"
"  Buffers: shared hit=31"
"  ->  Index Scan using "pДокумент" on "Документы" s  (cost=0.42..48.58 rows=10 width=174) (actual time=0.013..0.025 rows=10 loops=1)"
"        Index Cond: ("Документ" = ANY ('{807830,807831,807832,807833,807834,807835,807836,807837,807838,807839}'::integer[]))"
"        Buffers: shared hit=31"
"Planning time: 0.168 ms"
"Execution time: 0.077 ms"



Как заставить планировщик использовать индекс?
...
Рейтинг: 0 / 0
Индекс для сортировки
    #39968745
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11,

Никак... если бы вы знали принципы работы btree индексов вы бы понимали что ваш индекс не может использоваться для вашего запроса эффективнее чем индекс по PK (и никакой вообще btree индекс целиком без сортировки наверху не может использоваться).
...
Рейтинг: 0 / 0
Индекс для сортировки
    #39968789
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
Подскажите какой создать индекс, чтобы в плане использовался только он и при поиске и при сортировки,
был IndexOnlyScan index_sort или IndexScan index_sort
...
Рейтинг: 0 / 0
Индекс для сортировки
    #39968790
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Подумал, что планировщику для 10 записей легче просканировать все 10 записей для сортировки, чем использовать индекс.

Пробовал в запросе искать по массиву из 10000 идентификаторов,
но планировщик не стал использовать новый иендекс
...
Рейтинг: 0 / 0
Индекс для сортировки
    #39968834
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11
Maxim Boguk,
Подскажите какой создать индекс, чтобы в плане использовался только он и при поиске и при сортировки,
был IndexOnlyScan index_sort или IndexScan index_sort


Для данного запроса такой индекс невозможен. Всегда будет sort или index scan + filter (если сделать индекс просто по s."Код" ).
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Индекс для сортировки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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