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
在Oracle中,insert语句没有列PROVIEW performance吗_Oracle_Oracle12c_Database Performance_Insert Into - Fatal编程技术网

在Oracle中,insert语句没有列PROVIEW performance吗

在Oracle中,insert语句没有列PROVIEW performance吗,oracle,oracle12c,database-performance,insert-into,Oracle,Oracle12c,Database Performance,Insert Into,我正在使用Oracle 12。 当您定义时,有一个不声明列列表的选项 如果您完全省略了列列表,那么values_子句或查询必须为表中的所有列指定值 此外,建议批量生产的最佳性能解决方案时,请参见: 我的问题是,不在语句中声明列是否真的比在语句中声明列更好或至少同等的性能 insert table A (col1, col2, col3) values (?, ?, ?); 最佳实践是,您总是在insert语句中定义列,不是为了性能(没有区别),而是为了以下情况: 创建带有col1、col2列

我正在使用Oracle 12。 当您定义时,有一个不声明列列表的选项

如果您完全省略了列列表,那么values_子句或查询必须为表中的所有列指定值

此外,建议批量生产的最佳性能解决方案时,请参见:

我的问题是,不在语句中声明列是否真的比在语句中声明列更好或至少同等的性能

insert table A (col1, col2, col3) values (?, ?, ?);

最佳实践是,您总是在insert语句中定义列,不是为了性能(没有区别),而是为了以下情况:

  • 创建带有col1、col2列的表test1
  • 在过程/etc中插入该表中的数据,而不命名列
  • 添加新列col3、col4
  • 当前逻辑将因insert失败,将引发错误

因此,为了避免失败,当您修改表结构时,请始终命名列,然后代码不会停止。

根据我的经验,省略列名没有任何好处,而且这样做也是一种不好的做法,因为如果列顺序发生变化(为了清楚起见,有时人们会这样做,但他们确实不需要这样做)并且它们的定义允许插入数据,您将在错误的列中获得错误的数据

根据经验,这不值得麻烦。始终指定要将值放入的列列表。数据库必须检查这一点


相关:

区别不是“列列表”,而是批量和/或绑定变量,即
@wernfrieddomsheit是,但它仍然提供了不带列列表的选项,而不是stating@KamilG. 但是可能的重复不是询问(和回答)关于OracleBy的问题,而是指文档中的实际链接?还有,你不相信我们分享的辛苦经验?开玩笑。。这可以作为“那些”问题中的一个来讨论——“更好地使用还是运算符?谁的性能更好?”我想你是对的,但我想知道的是具体的性能影响问题/答案是关于
MySQL和PostgreSQL
我真的无法想象Oracle会以另一种方式工作。列有它们的约束和修饰符:外键,非空。。。我不明白数据库如何在没有明确检查的情况下了解所有这些。此外,文档中没有提到这一点。这里也没有关于它的内容:
insert table A (col1, col2, col3) values (?, ?, ?);