За последние 24 часа нас посетили 22930 программистов и 1261 робот. Сейчас ищут 727 программистов ...

Индекс для сортировки

Тема в разделе "PostgreSQL", создана пользователем polin11, 13 июн 2020.

  1. polin11

    polin11 Активный пользователь

    С нами с:
    22 янв 2019
    Сообщения:
    20
    Симпатии:
    0
    СУБД PostgreSQL, таблица Документы первичный ключ Документ, поле Код типа text.
    Есть запрос

    Код (Text):
    1. SELECT s.*
    2. FROM "Документы" s
    3. where "Документ" = ANY(ARRAY[807830, 807831, 807832, 807833, 807834, 807835, 807836, 807837, 807838, 807839
    4. ])
    5. ORDER BY
    6. s."Код"
    Создал индекс
    Код (Text):
    1. CREATE INDEX "index_sort"
    2.     ON "Документы" USING btree
    3.     ("Документ" NULLS LAST, "Код" text_pattern_ops NULLS LAST);
    Но почему-то планировщик его не использует, делал VACUUM, REINDEX, используется
    индекс по первичному ключу, план такой:

    Код (Text):
    1. "Sort  (cost=48.74..48.77 rows=10 width=174) (actual time=0.061..0.062 rows=10 loops=1)"
    2. "  Sort Key: "Код"
    3. "  Sort Method: quicksort  Memory: 26kB"
    4. "  Buffers: shared hit=31"
    5. "  ->  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)"
    6. "        Index Cond: ("Документ" = ANY ('{807830,807831,807832,807833,807834,807835,807836,807837,807838,807839}'::integer[]))"
    7. "        Buffers: shared hit=31"
    8. "Planning time: 0.168 ms"
    9. "Execution time: 0.077 ms"
    Как заставить планировщик использовать индекс?