我正在使用Oracle 12。 定义insert statement时,可以选择不声明列列表
如果您完全省略了列列表,则values_clause或查询必须为表中的所有列指定值。
Ask TOM中还介绍了批量最佳性能解决方案:
insert into insert_into_table values ( data(i) );
我的问题是,不是说列的性能确实比陈述中的列更好或至少等于
insert table A (col1, col2, col3) values (?, ?, ?);
答案 0 :(得分:2)
最佳实践是,您始终在insert语句中定义列,而不是出于性能考虑(没有区别),而是出于以下情况:
因此,为避免失败,请始终命名列,然后在修改表结构时代码不会停止。
答案 1 :(得分:2)
根据我的经验,省略列名是没有好处的-这样做也是不好的做法,因为如果列顺序发生了变化(为了清楚起见,有时人们会这样做,但实际上并不需要这样做)及其定义允许插入数据,您将在错误的列中获得错误的数据。
根据经验,这样做是不值得的。始终指定要输入值的列列表。数据库必须仍然进行检查。