Oracle 23ai(23.9)에 UUID 함수가 추가되었습니다. UUID 함수는 version 4 variant 1 UUID를 RAW(16) 형식의 값으로 반환합니다.
아래는 UUID 함수를 사용한 예제입니다. UUID 함수는 SYS_GUID 함수와 달리 로우 별로 다른 값을 반환합니다.
-- 1
SELECT UUID () AS uuid
, SYS_GUID () AS sys_guid
FROM XMLTABLE ('1 to 2');
UUID SYS_GUID
-------------------------------- --------------------------------
67674554354B4FD7BF7EDEB601A3B609 3A1B91494C76C2DAE0630B01011ECAAB
ECB1CEEDB1214F65BFB8325AE83D4807 3A1B91494C77C2DAE0630B01011ECAAB
2 rows selected.
테스트를 위해 아래와 같이 테이블을 생성하겠습니다.
-- 2
DROP TABLE t1 PURGE;
CREATE TABLE t1 (c1) AS SELECT ROWNUM FROM XMLTABLE ('1 to 10000000');
아래 예제는 UUID 함수, SYS_GUID 함수, ORA_HASH 함수, DBMS_RANDOM.VALUE 함수의 수행 시간을 보여줍니다.
-- 3-1
SELECT COUNT (UUID ()) FROM t1;
Elapsed: 00:00:09.89
-- 3-2
SELECT COUNT (SYS_GUID ()) FROM t1;
Elapsed: 00:00:00.48
-- 3-3
SELECT COUNT (ORA_HASH (c1)) FROM t1;
Elapsed: 00:00:00.99
-- 3-4
SELECT COUNT (DBMS_RANDOM.VALUE) FROM t1;
Elapsed: 00:00:10.65