powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование индексов одновременно в условии и в сортировке
5 сообщений из 5, страница 1 из 1
Использование индексов одновременно в условии и в сортировке
    #33492254
Безон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем таблицу вакансий:
Имеем следующие запрос и план
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select * from VACANCIES  where active and visibility= 3  and town_id= 67  order by PRIORITY desc, LAST_MODIFIED_DATE desc limit  20 ;
---
Limit  (cost= 1826 . 16 .. 1826 . 21  rows= 20  width= 1235 )
  ->  Sort  (cost= 1826 . 16 .. 1827 . 99  rows= 733  width= 1235 )
        Sort Key: priority, last_modified_date
        ->  Index Scan using vacancies_town_id on vacancies  (cost= 0 . 00 .. 1791 . 28  rows= 733  width= 1235 )
              Index Cond: (town_id =  67 )
а также похожий запрос и совсем не похожий план:
Код: plaintext
1.
2.
3.
4.
5.
select * from VACANCIES  where active and visibility= 3  and town_id= 1  order by PRIORITY desc, LAST_MODIFIED_DATE desc limit  20 ;
---
Limit  (cost= 0 . 00 .. 13 . 46  rows= 20  width= 1235 )
  ->  Index Scan Backward using vacancies_priority_lm_date on vacancies  (cost= 0 . 00 .. 139562 . 70  rows= 207345  width= 1235 )
        Filter: (town_id =  1 )
Второй запрос работает ясное дело быстре. Но вопрос не в этом!
А можно ли заставить постгрес использовать оба индекса (по town_id и по prioirity, last_modified_date) одновременно?
...
Рейтинг: 0 / 0
Использование индексов одновременно в условии и в сортировке
    #33493893
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А explain analyze можно?
Вообще интересно. Ощущение будто Postgres думает , что с города 67 давно ничего не вставлялось или вставлялось очень мало.
Если это так, то может он и прав.
И вообще я все реже борюсь с "неэфективными" планами, выбранными самим Postgres - часто выигрыш <10-20% а сексуальных отношений много.

А логически подумав - нет нельзя по обоим индексам, так как на сортировочный индекс нет условия.
Два индекса могут использоваться если оба участвуют в условии. Я могу ошибаться.
...
Рейтинг: 0 / 0
Использование индексов одновременно в условии и в сортировке
    #33493914
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БезонИмеем таблицу вакансий:
Имеем следующие запрос и план
[src]
select * from VACANCIES where active and visibility=3 and town_id=67 order by PRIORITY desc, LAST_MODIFIED_DATE desc limit 20;

Второй запрос работает ясное дело быстре. Но вопрос не в этом!
А можно ли заставить постгрес использовать оба индекса (по town_id и по prioirity, last_modified_date) одновременно?
Версия PG какая? Вроде как толковое использование нескольких индексов появилось в PG 8.1.
...
Рейтинг: 0 / 0
Использование индексов одновременно в условии и в сортировке
    #33494038
Безон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия последняя 8.1
...
Рейтинг: 0 / 0
Использование индексов одновременно в условии и в сортировке
    #33495049
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron
Версия PG какая? Вроде как толковое использование нескольких индексов появилось в PG 8.1.
появилось, но оно здесь не поможет: после bitmap scan данные будут в том порядке, в коем они в таблице, а не в индексе.

индекс может использоваться для выборки и сортировки, только для сортировки --- нет.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Использование индексов одновременно в условии и в сортировке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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