PostgreSQL обновление частичных индексов

#postgresql

Вопрос:

У меня есть частичная фильтрация индекса только по столбцу с ненулевыми значениями. Если есть обновление строки, в которой это значение было равно NULL до и после обновления, затрагивается ли индекс вообще?

У меня есть таблица, в которой строки мягко удаляются с помощью столбца с именем «удалено», который содержит отметку времени, допускающую обнуление. Я хочу создать запрос, который с трудом удалит все строки, которые были удалены более недели назад, путем поиска по этому столбцу. У этой таблицы очень высокая пропускная способность обновления, но они касаются только «живых» строк, где deleted=NULL, и я не хочу добавлять дополнительные затраты на блокировку или обновление другого индекса.

Ответ №1:

Если вы вставляете, обновляете или удаляете строку, которая исключена из WHERE условия индекса (и если в случае обновления также исключена новая версия строки), индекс не нужно будет изменять, поэтому вам не придется платить эту цену.

Индекс все равно не заблокирован, так что это не должно вас беспокоить.