Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como e quando os índices são usados ​​nas operações INSERT e UPDATE?


Para instruções UPDATE, o índice pode ser usado pelo otimizador se considerar que o índice pode acelerá-lo. O índice seria usado para localizar as linhas a serem atualizadas. O índice também é uma tabela, por assim dizer, então se a coluna indexada está sendo atualizada, obviamente ela também precisa ATUALIZAR o índice. Por outro lado, se você estiver executando uma atualização sem uma cláusula WHERE, o otimizador pode optar por não usar um índice, pois ele precisa acessar a tabela inteira, uma verificação completa da tabela pode ser mais eficiente (mas ainda pode ter que atualizar o índice ). O otimizador toma essas decisões em tempo de execução com base em vários parâmetros, como se há estatísticas válidas em relação às tabelas e índices em questão, quantos dados são afetados, que tipo de hardware etc.

Para instruções INSERT, embora o próprio INSERT não precise do índice, o índice também precisará ser 'inserido em', portanto, precisará ser acessado pelo oracle. Outro caso em que INSERT pode fazer com que o índice seja usado é um INSERT como este:
INSERT INTO mytable (mycolmn)
SELECT mycolumn + 10 FROM mytable;