UPDATE (SET a = 'foo' where field и LIKE '%pattern%')
Нужно было перед командой добавить "EXPLAIN ANALYSE ", тогда можно было узнать план запроса, не выполняя его.
3. Почему UPDATE не связанный с этим полем так тормозит?
См. выше.
Особенно когда
Есть таблица на 100 млн записей.
Кроме того, что за индекс был добавлен на поле, по которому выполняется LIKE? Если B-tree, Hash, то это имеет
нулевую ценность для ускорения запроса. По этому полю возможно нужен
GIN индекс (pg_trgm). Или даже необходимо перепроектировать таблицы, вынеся это поле, разбив на множество записей и связью N:M. Мы не знаем что за данные в том поле.
Для экспериментов лучше создавать ограниченный набор данных, приближенный к продакшн и тестировать на нем, вместо на 100М записей.