SQL INSERT性能省略字段名称?

时间:2010-03-24 18:20:54

标签: sql performance

是否有人知道从INSERT查询中删除字段名称是否会带来一些性能改进?

我的意思是:

INSERT INTO table1 VALUES (value1, value2, ...)

更快地完成数据库而不是这样做:

INSERT INTO table1 (field1, field2, ...) VALUES (value1, value2, ...)

我知道这可能是一种毫无意义的性能差异,但只是要知道。

我通常使用MySQL和PostgreSQL作为数据库。

3 个答案:

答案 0 :(得分:13)

不,实际上恰恰相反!至少对于Microsoft SQL Server - 您没有指定您正在谈论的数据库......

如果未在SELECT或INSERT中指定字段,则SQL Server的查询处理器必须首先检查系统目录以找出确实可用的字段。

所以我总是建议明确列出你想要的字段 - 在SELECT上和INSERT上一样多。

答案 1 :(得分:1)

不,它并不快。数据库必须检查表中的哪些字段并且仍然与值匹配。

您应始终在查询中指定字段,以使代码更加健壮。如果有人更改了表中字段的顺序,如果您没有指定字段,它将停止工作(或者更糟糕的是将数据写入错误的字段)。

答案 2 :(得分:1)

我不知道通过省略字段名称来提高性能,但除了测试/一次性插入之外,我会建议不要使用它。

可读性将受到影响(您必须检查表以查看插入的位置),如果表模式发生更改,您的代码将会中断