这两个视图中哪一个需要的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条答案
按热度按时间5vf7fwbs1#
从Information Center开始:
CONCAT函数与CONCAT运算符相同。有关详细信息,请参阅使用串联运算符。
所以,确切的答案是:它们是一样的。然而,IBM确实有这样的说法:
竖线(或在某些国家/地区必须用来代替竖线的字符)可能会导致从一个DBMS传递到另一个DBMS的语句出现语法分析错误。如果语句使用源CCSID和目标CCSID的某些组合进行字符转换,则会出现此问题。因此,CONCAT是首选的串联运算符。
vx6bjr1n2#
我不认为会有性能差异,但使用管道使它更容易阅读。
mf98qq943#
为什么不干脆做
创建视图VIEW1作为从表中选择A连续B连续C连续D连续E连续F连续F连续G连续H连续I
ybzsozfc4#
不确定性能如何,但在处理
null
值时它们的行为会有所不同。请参阅:String concatenation with a null seems to nullify the entire string - is that desired behavior in Postgres?