UPDATEステートメントの場合、オプティマイザーがインデックスを高速化できると判断した場合、インデックスを使用できます。インデックスは、更新する行を見つけるために使用されます。インデックスは、ある意味ではテーブルでもあるため、インデックス付きの列が更新される場合は、明らかにインデックスも更新する必要があります。一方、WHERE句なしで更新を実行している場合、オプティマイザーはテーブル全体にアクセスする必要があるため、インデックスを使用しないことを選択する可能性があります。全表スキャンの方が効率的です(ただし、インデックスを更新する必要がある場合があります)。 )。オプティマイザーは、問題のテーブルとインデックスに対して有効な統計があるかどうか、影響を受けるデータの量、ハードウェアの種類など、いくつかのパラメーターに基づいて実行時にこれらの決定を行います。
INSERTステートメントの場合、INSERT自体はインデックスを必要としませんが、インデックスも「挿入」する必要があるため、Oracleからアクセスする必要があります。 INSERTによってインデックスが使用される可能性がある別のケースは、次のようなINSERTです。
INSERT INTO mytable (mycolmn)
SELECT mycolumn + 10 FROM mytable;