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

Oracle ROWID en tant que paramètre de fonction/procédure

À partir du guide conceptuel :

Le principal inconvénient d'un ROWID est que, bien qu'il soit normalement stable, il peut changer dans certaines circonstances :

  • La table est reconstruite (ALTER TABLE MOVE ...)
  • Exporter / Importer évidemment
  • Table de partition avec activation du mouvement de ligne

Une clé primaire identifie une ligne logiquement , vous trouverez toujours la bonne ligne, même après un delete+insert. Un ROWID identifie la ligne physiquement et n'est pas aussi persistant qu'une clé primaire.

Vous pouvez utiliser en toute sécurité ROWID dans une seule instruction SQL car Oracle garantira la cohérence du résultat, par exemple pour supprimer les doublons dans une table. Pour plus de sécurité, je suggérerais que vous n'utilisiez que le ROWID à travers les déclarations lorsque vous avez un verrou sur la ligne (SELECT ... FOR UPDATE).

Du point de vue des performances, l'accès à la clé primaire est un peu plus cher, mais vous ne le remarquerez normalement que si vous faites beaucoup d'accès à une seule ligne. Cependant, si les performances sont essentielles, vous pouvez généralement tirer plus d'avantages dans ce cas en utilisant le traitement d'ensemble que le traitement de ligne unique avec rowid. En particulier, s'il y a beaucoup d'allers-retours entre la BDD et l'application, le coût de l'accès à la ligne sera probablement négligeable par rapport au coût des allers-retours.