这两个视图中的哪一个需要较少的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
答案 0 :(得分:11)
CONCAT功能与CONCAT运算符相同。更多 信息,请参阅With the concatenation operator。
所以,明确的答案是:它们是一样的。但是,IBM确实有这样的说法:
垂直条(或必须使用的字符代替 某些国家/地区的竖条可能会导致解析错误 语句从一个DBMS传递到另一个DBMS。如果出现问题 声明经历了某些组合的字符转换 源和目标CCSID。因此,CONCAT是首选 连接运算符。
答案 1 :(得分:1)
我不认为会有性能差异,但使用管道会让它更容易阅读。
答案 2 :(得分:0)
为什么不简单地做
创建视图VIEW1为 从表中选择A concat B concat C concat D concat E concat F concat F concat G concat H concat I
答案 3 :(得分:0)
不确定性能,但它们在处理 null
值时表现不同。请参阅:String concatenation with a null seems to nullify the entire string - is that desired behavior in Postgres?