powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / индексы и все о них
6 сообщений из 6, страница 1 из 1
индексы и все о них
    #35628650
spyfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объясните пожалуйста работу индексов:
Есть табличка:
id serial PRIMARY KEY,
parent_id int4 NOT NULL,
name varchar(255),
is_main boolean NOT NULL,
sort_order int4 NOT NULL

SELECT * FROM table WHERE is_main = true AND parent_id IS NULL ORDER BY sort_order, name;

Меня инетерсует слудеющее:
Если создать индекс на (is_main, parent_id) - для выборки и на (sort_order, name) - для сортировки, то будет ли использоваться 2 индекса при запросе (один для выбоки второй для сортировки)? Или будет использован только первый индекс для выбоки, а для сортировки индекс использован не будет?
...
Рейтинг: 0 / 0
индексы и все о них
    #35629090
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spyfox wrote:


> Если создать индекс на (is_main, parent_id) - для выборки и на
> (sort_order, name) - для сортировки, то будет ли использоваться 2
> индекса при запросе (один для выбоки второй для сортировки)? Или будет
> использован только первый индекс для выбоки, а для сортировки индекс
> использован не будет?

Обычно для доступа к таблице используется один индекс или не
используется индекс вообще. В сложных случаях может использоваться
несколько индексов, но не для сортировки.

Короче, ответ (примитивно) - нет, будет
использован только первый индекс для выбоки, а для сортировки индекс
использован не будет. Или же наоборот, не будет для фильтраци, а будет
для сортировки.

К тому же если у вас индекс будет эффективно использоваться
для фильтрации, то как правило он будет возвращать небольшое
число записей, которое отсортировать несложно, т.е. там нет
смысла использовать индекс для сортировки (дороже).
И наоборот, если имеет смысл использовать индекс для сортировки,
то это значит, что записей много и, следовательно, сервер
не смог найти хороший индекс для фильтрации.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
индексы и все о них
    #35629975
spyfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а может ли один индес быть использован как для выборки так и для сортировки?
...
Рейтинг: 0 / 0
индексы и все о них
    #35630165
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT * FROM table WHERE is_main = true AND parent_id IS NULL ORDER BY sort_order, name
индекс может выглядеть примерно так
Код: plaintext
CREATE idx_xxx  ON  xxx  (is_main, (parent_id IS NULL) ,sort_order, name)
или
Код: plaintext
CREATE idx_xxx  ON  xxx  (sort_order, name) WHERE is_main = true AND parent_id IS NULL 
при этом, если записей ,скажем, будет 1-2, боюсь, индекс использоваться точно не будет.
...
Рейтинг: 0 / 0
индексы и все о них
    #35630174
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прастите, главное слово инструкции зобыл :0)
assaиндекс может выглядеть примерно так
Код: plaintext
CREATE INDEX idx_xxx  ON  xxx  (is_main, (parent_id IS NULL) ,sort_order, name)
или
Код: plaintext
CREATE INDEX idx_xxx  ON  xxx  (sort_order, name) WHERE is_main = true AND parent_id IS NULL 
...
Рейтинг: 0 / 0
индексы и все о них
    #35631035
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spyfox пишет:
> а может ли один индес быть использован как для выборки так и для сортировки?
Да. Но ОБЫЧНО в разное время разными запросами.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / индексы и все о них
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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