Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 1
Регистрация: 24.03.2013
Сообщений: 178

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

13.06.2020, 02:33. Показов 1517. Ответов 3

Студворк — интернет-сервис помощи студентам
СУБД PostgreSQL, таблица Документы первичный ключ Документ, поле Код типа 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2020, 02:33
Ответы с готовыми решениями:

Кластерный индекс принцип сортировки данных
Важной характеристикрй кластерного индекса является, то что все значения в нем отсортированы по возрастанию либо убыванию Объясните,...

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5 и так далее. Теперь...

Метод для сортировки массива, методом пузырька - индекс находился вне границ массива
Доброго времени суток. Я изучаю С# недавно. Прочел похожие темы на форму, но так и не понял, как исправить эту ошибку.. Вот написал...

3
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
13.06.2020, 09:05
Покажите полное описание таблицы.

У вас уже используется индекс "pДокумент" для выборки
Цитата Сообщение от polin11 Посмотреть сообщение
INDEX Scan USING "pДокумент" ON "Документы" s
Зачем вам второй индекс??
Вы хотите избавиться от дополнительной сортировки или что??
0
1 / 1 / 1
Регистрация: 24.03.2013
Сообщений: 178
13.06.2020, 13:24  [ТС]
Да, я хочу отказаться от сортировки. Сделать один индекс, чтобы покрывал и поиск и сортировку, чтобы в плане
был IndexOnlyScan index_sort или IndexScan index_sort.
Подумал, что планировщику для 10 записей легче просканировать все 10 записей для сортировки, чем использовать индекс.

Пробовал в запросе искать по массиву из 10000 идентификаторов,
но планировщик не стал использовать новый иендекс
0
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
13.06.2020, 22:44
У вас идет выборка s.*, то есть index-only scan тут по определению не возможен.

SQL
1
2
3
4
5
6
SELECT s."Документ", s."Код"
FROM "Документы" s
WHERE "Документ" = ANY(ARRAY[807830, 807831, 807832, 807833, 807834, 807835, 807836, 807837, 807838, 807839
])
ORDER BY
s."Код"
вот так еще может быть планировщик предложит ios.

Поиграйтесь еще CREATE INDEX ... INCLUDE ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2020, 22:44
Помогаю со студенческими работами здесь

Получить индекс значения после сортировки массива
Здравствуйте. Существует массив с числовыми значениями, некоторые значения совпадают . После сортировки их положение меняется. ...

Как получить индекс выделенной строки в DGV после сортировки
Добрый день. Для вывода в окошке номера текущей строки в гриде использую метод: void dataGridView1_CurrentCellChanged(object...

Хранимая процедура сортировки числового поля для сортировки по алфавиту
В таблице есть поле Name , в котором, собственно, и хранятся типы товаров, и есть поле Ordinal c уникальными значениями типа int Name ...

Составить блок – схемы для шейкер- сортировки и сортировки Шелла
Доброго времени суток, очень нужна ваша помощь в решении данной проблемы, буду бесконечно благодарен. Составить блок – схемы для шейкер-...

Создал код для сортировки медотом пузырька цикл идёт, а сортировки нет
def check(l): a = 0 while True: b = a + 1 if b == len(l): break if l > l: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru