Dois-je utiliser Oracle sys_guid() pour générer des guid?

J'ai quelques hérité de code qui appelle SELECT SYS_GUID() FROM DUAL chaque fois qu'une entité est créée. Cela signifie que pour chaque insertion il y a deux appels à l'Oracle, l'un pour obtenir l' Guid, et un autre pour insérer les données.

Je suppose qu'il peut y avoir une bonne raison pour cela, par exemple - Oracle Guid peut être optimisé pour la haute-volume insertions en étant séquentiel et ainsi, ils sont peut-être en essayant d'éviter l'excès d'arbre d'index de ré-équilibrage.

Est-il une raison pour utiliser SYS_GUID par opposition à la construction de votre propre Guid sur le client?

Puis-je mettre une manière différente? Vous ne devriez probablement pas construire votre propre GUID quand il y a une implémentation native. Ce n'est pas une raison pour utiliser sys_guid() nécessairement bien. C'est beaucoup plus lent que d'utiliser une séquence et une crue de type de données, ce qui est plus gênant de travailler avec qu'un simple numéro. Si ce n'est que dans un DB pourquoi ne pouvez-vous pas simplement utiliser une séquence unique pour tout?
Je devrait être clair que toutes les langues que je connais qui sont utilisés sur le Client ont GUID types. Ainsi, un nouveau Guid en C# est créé par un Guid.NewGuid() et en java de la même est créé par l'UUID.ramdomUUID(). Quand je dis "de construire mon propre' je ne veux pas écrire des bouts de code, mais plutôt la création d'un nouveau Guid. Depuis les Guid sont garantis d'être unique, il ne devrait pas faire une différence quant à l'endroit où ils sont créés. La question ne concerne que l'avantage relatif de la création de votre Guid dans Oracle par opposition au client. Je sais qu'il y a (par programmation cher) façons de créer un guid dans Oracle sur insérer

OriginalL'auteur cmdematos | 2012-08-08