Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 持久计算Oracle虚拟列_Sql_Oracle_Oracle11gr2 - Fatal编程技术网

Sql 持久计算Oracle虚拟列

Sql 持久计算Oracle虚拟列,sql,oracle,oracle11gr2,Sql,Oracle,Oracle11gr2,为了提高性能,我希望通过组合来自同一列的几个字段来生成持久性派生列 我已经探索了自动化和虚拟专栏,但没有给我合适的解决方案。 发现Oracle虚拟列与派生列类似,具有常规视图中字段的组合/计算以及一些附加功能,它在查询执行期间执行虚拟列表达式 除了常规视图外,还可以选择使用物化视图,这将创建单独的物化视图段和单独的执行开销 我试图找出如何维护只读虚拟列,当提交发生时,将在插入/更新字段时自动计算该列。在Oracle 11gR2中,有人能为此解决方案提供帮助吗 -例如: 创建表1ID int,字段

为了提高性能,我希望通过组合来自同一列的几个字段来生成持久性派生列

我已经探索了自动化和虚拟专栏,但没有给我合适的解决方案。 发现Oracle虚拟列与派生列类似,具有常规视图中字段的组合/计算以及一些附加功能,它在查询执行期间执行虚拟列表达式

除了常规视图外,还可以选择使用物化视图,这将创建单独的物化视图段和单独的执行开销

我试图找出如何维护只读虚拟列,当提交发生时,将在插入/更新字段时自动计算该列。在Oracle 11gR2中,有人能为此解决方案提供帮助吗

-例如:

创建表1ID int,字段1 varchar230,字段2 varchar230,字段3 varchar230,字段4 varchar230,字段5 varchar2200; ..直接路径加载将通过ETL过程加载到id、field1、field2、field3和field4中。。。 更新表1设置字段5=field1 | | | | | | | | |字段2 | | |字段3 | | |字段4; 犯罪
在上面的示例中,我希望在执行1、2和4之后,在内部自动填充field5,而不增加主要执行时间。

我们可以使用下面的查询来解决上述问题

 create table table1
 (id int, 
  field1 varchar2(30),
  field2 varchar2(30),
  field3 varchar2(30),
  field4 varchar2(30),
  field5 varchar2(200) GENERATED ALWAYS AS (field1 || '#' || field2 || '#' || field3 || '#' || field4));
请仔细检查为什么需要附加列

我可以推测,这是为了使用谓词优化访问,例如

WHERE field5 like '%#<search key>#%'
与上面相同的谓词,您现在可以用

 WHERE field_value = '<search key>'
i、 e.您可以通过全表扫描或索引访问来获得性能查询


很抱歉,如果我的推测方向错误,对于这样一个简单的表达式,只有我的0.02c

,我认为实际存储这个值没有任何好处。只需使用虚拟/计算列,就可以了。您实际测试了性能影响吗?当您在步骤2中填充了大量数据时,上面的update语句需要更长的时间。我只是希望避免在这里执行更新。再说一遍:为什么您认为您需要一个持久化列?如果您只是创建一个常规的计算列,那么确实可以避免执行更新。使用计算列检索时是否存在性能问题?原因:1。以下SQL脚本需要引用连接字段。2.希望避免执行更新3。旁路测井
 WHERE field_value = '<search key>'