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
4

4 回答 4

12

信息中心

CONCAT 函数与 CONCAT 运算符相同。有关更多信息,请参阅使用串联运算符

所以,明确的答案是:它们是一样的。但是,IBM 确实有这样的说法:

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

于 2013-03-05T22:46:30.140 回答
1

我认为不会有性能差异,但使用管道更容易阅读。

于 2013-03-05T19:21:47.807 回答
0

为什么不简单地做

创建视图 VIEW1 作为 select A concat B concat C concat D concat E concat F concat F concat G concat H concat I from TABLE

于 2019-03-06T19:38:19.303 回答
0

不确定性能,但它们在处理null值时表现不同。请参阅:字符串与 null 的连接似乎会使整个字符串无效 - 这是 Postgres 中所需的行为吗?

于 2021-07-27T10:20:39.747 回答