Como han indicado otros, hay un golpe de rendimiento que utiliza GUID en comparación con las secuencias numéricas. Dicho esto, hay una función llamada "SYS_GUID()", disponible desde Oracle 8i que proporciona el equivalente en bruto:
SQL> SELECT SYS_GUID() FROM DUAL;
SYS_GUID()
--------------------------------
248AACE7F7DE424E8B9E1F31A9F101D5
Una función podría ser creado para devolver un GUID con formato:
CREATE OR REPLACE FUNCTION GET_FORMATTED_GUID RETURN VARCHAR2 IS guid VARCHAR2(38) ;
BEGIN
SELECT SYS_GUID() INTO guid FROM DUAL ;
guid :=
'{' || SUBSTR(guid, 1, 8) ||
'-' || SUBSTR(guid, 9, 4) ||
'-' || SUBSTR(guid, 13, 4) ||
'-' || SUBSTR(guid, 17, 4) ||
'-' || SUBSTR(guid, 21) || '}' ;
RETURN guid ;
END GET_FORMATTED_GUID ;
/
Así devolver un intercambiables cadena:
SQL> SELECT GET_FORMATTED_GUID() FROM DUAL ;
GET_FORMATTED_GUID()
--------------------------------------
{15417950-9197-4ADD-BD49-BA043F262180}
Una nota de precaución debe ser hecho que algunas plataformas Oracle devuelven valores similares, pero aún únicas de GUID as noted por Steven Feuerstein.
El blog solo compara el trabajo con un guid que se genera desde el db como apposed para trabajar con sequence.nextval, pero me pregunto cómo es el rendimiento cuando se trabaja con guids generados desde el código .net ??? – gillyb
Agregó esa aclaración en el segundo párrafo después de que respondí. Es probable que haya algún golpe de rendimiento en el inserto debido al tamaño de los índices y al hecho de que el índice se dividirá debido al aspecto aleatorio del guid de .Net. Si se usa la función Oracle nativa, se organizan secuencialmente para evitar que sea similar a la función en SQL Server. – Turnkey
+1 para una respuesta concisa con la fuente, pero ¿cuál es el propósito de 'default SYS_GUID()'? Revisé el artículo, y no está claro para qué es esa parte. – zarose