такой вопрос: "Какое максимальное количество индексов может быть задействовано в рамках одного запроса для одной таблицы".
Есть разве какое-то ограничение на уровне СУБД?
Для таблицы ограничения есть, мб про это речь
Не совсем понял про ограничение.
Ограничение на количество созданных, а в вопросе про используемые в рамках какого-либо запроса
Google -> postgres limitations
Если верить вот этому то ограничений на использование индексов в запросе нет https://www.postgresql.org/docs/14/indexes-bitmap-scans.html
Ну да, и ограничений на кол-во индексах в одной таблице тоже нет. Т.е по идее можно вообще не ограниченное кол-во индексов сделать в таблице (по одному на колонку, составные), и их же использовать в запросе, чисто гипотетически
И выхватить просадку вставки/обновления.... Все хорошо в меру
Это само собой. Ту вопрос про возможное количественное ограничение. То что при встаке больно будет это понятно)
Интересный вопрос, но почти уверен, что тот, кто спрашивал сам не знает ответа. Каждый индекс это запись в pg_catalog.pg_index, там имеется служебная колонка OID, тип oid это unsigned 4-byte integer. Т.е. лимит на количество индексов 2^32, в теории, однако, что будет если создать 2^32+1 надо проверять.
Зачем кому-то может понадобиться 4млрд индексов?)
Нулевое приближение: не более одного. Первое приближение: bitmap_index_scan может пройтись по нескольким индексам, а потом пересечь/объединить карты. Не встречал, чтобы больше двух индексов сразу, но, наверное, бывает. Ну и понятно, что это для 1 синонима таблицы. Если таблица в запросе 10 раз, то 10 разных индексов может быть использовано
Через or можно по идее хоть все индэксы прямым сканированием туда напихать.
+1 Вопрос, как мне кажется, не такой уж и глупый и рассчитан не знание всяких ограничений конкретной СУБД, а на общую логику выполнения запроса. Если не учитывать bitmap-index-scan с пересечением битмапов, который хотя и использует индексы, но всё таки скорее яаляется разновидностью последовательного поиска, то индекс для одной таблицы можно использовать только один раз - остальные условия уже придётся фильтровать.
В вопросе не использование а задействование, что несколько шире
Обсуждают сегодня