Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment et quand les index sont-ils utilisés dans les opérations INSERT et UPDATE ?

Pour les instructions UPDATE, l'index peut être utilisé par l'optimiseur s'il estime que l'index peut l'accélérer. L'index serait utilisé pour localiser les lignes à mettre à jour. L'index est aussi une table en quelque sorte, donc si la colonne indexée est mise à jour, elle doit évidemment METTRE À JOUR l'index également. D'un autre côté, si vous exécutez une mise à jour sans clause WHERE, l'optimiseur peut choisir de ne pas utiliser d'index car il doit accéder à toute la table, une analyse complète de la table peut être plus efficace (mais peut toujours devoir mettre à jour l'index ). L'optimiseur prend ces décisions au moment de l'exécution en fonction de plusieurs paramètres tels que s'il existe des statistiques valides par rapport aux tables et aux index en question, la quantité de données affectées, le type de matériel, etc.

Pour les instructions INSERT, bien que l'INSERT lui-même n'ait pas besoin de l'index, l'index devra également être "inséré dans", il devra donc être accessible par oracle. Un autre cas où INSERT peut entraîner l'utilisation de l'index est un INSERT comme celui-ci :

INSERT INTO mytable (mycolmn)
SELECT mycolumn + 10 FROM mytable;