DB2 concat和双竖线的区别

7

这两个视图中哪一个需要更少的 CPU?

我正在检查一些视图的句子,并想知道如果将 concat 函数替换为双竖线是否会有性能提升。

create view VIEW1 as
select concat(concat(concat(concat(concat(concat(concat(concat(concat(A, B),C),D),E),F),F),G),H),I) from TABLE

create view VIEW2 as
select A||B||C||D||E||F||G||H||I from TABLE

如果有任何可测量的性能差异,我会感到非常惊讶。 - user330315
concat函数和concat运算符是一样的吗?也许它们之间有性能差异。http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000781.html?cp=SSEPGG_10.5.0%2F2-12-4-1-25 - http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000736.html?cp=SSEPGG_10.5.0%2F2-12-2-10 运算符concat是concat函数的别名吗?那么调用别名会稍微昂贵一些。但我不确定。 - AngocA
4个回答

12

来自信息中心

CONCAT函数与CONCAT运算符相同。有关更多信息,请参见使用连接运算符

因此,明确的答案是:它们是相同的。然而,IBM确实有这样的说法:

竖线(或在某些国家/地区必须使用的字符)可能会导致从一个DBMS传递到另一个DBMS的语句解析错误。如果语句在某些源和目标CCSID组合下进行字符转换,则会出现问题。因此,CONCAT是首选的连接运算符。


你在我提问之前就回答了我所有的DB2问题。 - Xyan Ewing
CONCAT不等同于||运算符:https://dev59.com/oFsW5IYBdhLWcg3wdnJh - Nika Kasradze
1
@NikaKasradze 这是针对PostgreSQL的。DB2的文档说:结果可以为null;如果任何一个参数为null,则结果为null值。 - bhamby

1
我认为性能不会有差别,但使用管道可以使阅读更加容易。

0

0
为什么不直接这样做呢?
创建视图 VIEW1 作为 从 TABLE 中选择 A 连接 B 连接 C 连接 D 连接 E 连接 F 连接 G 连接 H 连接 I

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接