将视图数据类型定义为VARCHAR2(4000)影响性能的函数?

时间:2016-08-17 19:16:27

标签: sql oracle plsql

我创建了一个返回VARCHAR2变量的函数,它返回的变量在函数本身中输入为VARCHAR2(200)

我还创建了一个视图,将该函数用作其中的列。这会自动将视图中该列的数据类型设置为VARCHAR2(4000)

这会导致任何性能/存储问题吗?

此外,我最好投入一个SUBSTR来限制它应该是正确的200个字符吗?

Oracle 11g BTW。

1 个答案:

答案 0 :(得分:2)

即使在任何地方使用VARCHAR2(4000)也不会导致问题,如果您所做的一切都在SQL中(并且在这种情况下很可能不会导致问题),一旦您开始将数据提取到应用程序中,这可能会很痛苦。应用程序可能别无选择,只能根据列中字符串的最大假设长度来分配内存...您可能会以这种方式非常快地耗尽内存。更不用说GUI将为函数返回的任何内容保留和格式化4000个字符...

要限制视图中列的大小,解决方案就是您所说的:如果将函数包装在视图的substr()子句中的select内,则列数据类型将为设为VARCHAR2(200)。这对我来说似乎是正确的方法。