Используются ли индексы, когда выполняется UPDATE без предложения WHERE - PullRequest
1 голос
/ 23 августа 2010

В Oracle используются индексы, используемые при выполнении UPDATE без предложения WHERE

Ответы [ 3 ]

5 голосов
/ 23 августа 2010

Под "использованным" вы подразумеваете "упомянутый" или "измененный"?

ОБНОВЛЕНИЕ без предложения WHERE сводится к итерации по всей таблице; Я не вижу веской причины, по которой Oracle должен ссылаться на индекс в этом случае, так как от этого не будет никакой пользы. (Хотя это немного больше, чем квалифицированное предположение.) Нонб прав, что индекс будет затронут в зависимости от того, к какому столбцу вы прикоснулись.

2 голосов
/ 23 августа 2010

Будет ли Oracle использовать индекс для поиска обновляемых строк?Без предложения where, почти наверняка нет.

Придется ли Oracle читать один или несколько индексов, получая блоки в согласованном режиме для их обновления?Если вы обновляете какие-либо столбцы, которые проиндексированы, имеют индексы на основе функций, которые приведут к обновленному индексированному значению или вызовут перемещение строк между разделами, тогда да, индексы «будут использоваться».

2 голосов
/ 23 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...