我想在oracle sql查询中连接多个(3)列.目前我正在使用功能concat.有人建议用它||代替,concat因为它带来了性能上的好处.
这是真的吗?如果是,为什么?
我只看到了||的好处 是书面查询更具可读性.
我设置了一个简单的PL/SQL脚本(下面),在每个循环中尝试两个串联选项.结果为||142.93秒,CONCAT为144.11秒.无论哪种方式,你说的是每次操作大约1.4微秒.我的结论是,似乎没有任何可观的性能差异.
除了更具可读性之外,||还是串联运算符的ANSI标准.
DECLARE
i NUMBER;
j NUMBER := 100000000;
v VARCHAR2 (1000);
v_start TIMESTAMP := SYSTIMESTAMP;
BEGIN
FOR i IN 1 .. j LOOP
v := DBMS_RANDOM.VALUE () || DBMS_RANDOM.VALUE ();
END LOOP;
DBMS_OUTPUT.put_line ('1: ' || (SYSTIMESTAMP - v_start));
END;
DECLARE
i NUMBER;
j NUMBER := 100000000;
v VARCHAR2 (1000);
v_start TIMESTAMP := SYSTIMESTAMP;
BEGIN
FOR i IN 1 .. j LOOP
v := CONCAT (DBMS_RANDOM.VALUE (), DBMS_RANDOM.VALUE ());
END LOOP;
DBMS_OUTPUT.put_line ('2: ' || (SYSTIMESTAMP - v_start));
END;
Run Code Online (Sandbox Code Playgroud)
作为脚注,Oracle说这个CONCAT功能的目的:
在具有不同字符集的系统(例如ASCII和EBCDIC)之间移动SQL脚本文件时,垂直条可能不会转换为目标Oracle数据库环境所需的垂直条.对于操作系统或网络实用程序难以或无法控制转换的情况,Oracle提供CONCAT字符函数作为垂直条操作符的替代方法.在将在具有不同字符集的环境之间移动的应用程序中使用此功能.
| 归档时间: |
|
| 查看次数: |
6788 次 |
| 最近记录: |