SQL插入性能忽略字段名?

SQL插入性能忽略字段名?,sql,performance,Sql,Performance,有人知道从INSERT查询中删除字段名是否会带来一些性能改进吗 我的意思是: INSERT INTO table1 VALUES (value1, value2, ...) 比这样做更快地完成DB: INSERT INTO table1 (field1, field2, ...) VALUES (value1, value2, ...) ? 我知道这可能是一个毫无意义的性能差异,但只是想知道 我通常使用MySQL和PostgreSQL作为数据库。不,事实上恰恰相反至少对于Microsoft

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

我的意思是:

INSERT INTO table1 VALUES (value1, value2, ...)
比这样做更快地完成DB:

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

我知道这可能是一个毫无意义的性能差异,但只是想知道


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

不,事实上恰恰相反至少对于Microsoft SQL Server-您没有指定要谈论的数据库

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


因此,我总是建议明确列出您想要的字段-在选择时和在插入时一样多。

不,这并不快。数据库必须检查表中的字段,并与值匹配


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

我不知道省略字段名会有什么性能改进,但我建议不要使用它,而不是测试/仅插入一次


可读性将受到影响(您必须检查表以查看插入的内容),如果表架构发生更改,代码将中断

+1原则上我同意,但是奇怪的是,在后一种情况下,它不一定要查询模式中的列定义/默认值吗?+1,而且如果没有指定列名,对于具有10列的insert查询,可读性也会非常差。+1,但别忘了,当添加新列时,列名列会使旧代码中断。当某些傻瓜决定重新排列列顺序时,列名列也会使代码中断。始终在所有要在生产环境中运行的语句中指定字段。@Marco:是的,当您查看内容时,在SSMS中快速“脏”的即席SQL查询完全可以-
SELECT*
,但您真的不应该在任何地方的生产环境代码中使用它;也不例外。