是否有人知道从INSERT查询中删除字段名称是否会带来一些性能改进?
我的意思是:
INSERT INTO table1 VALUES (value1, value2, ...)
更快地完成数据库而不是这样做:
INSERT INTO table1 (field1, field2, ...) VALUES (value1, value2, ...)
我知道这可能是一种毫无意义的性能差异,但只是要知道。
我通常使用MySQL和PostgreSQL作为数据库。
答案 0 :(得分:13)
不,实际上恰恰相反!至少对于Microsoft SQL Server - 您没有指定您正在谈论的数据库......
如果未在SELECT或INSERT中指定字段,则SQL Server的查询处理器必须首先检查系统目录以找出确实可用的字段。
所以我总是建议明确列出你想要的字段 - 在SELECT上和INSERT上一样多。
答案 1 :(得分:1)
不,它并不快。数据库必须检查表中的哪些字段并且仍然与值匹配。
您应始终在查询中指定字段,以使代码更加健壮。如果有人更改了表中字段的顺序,如果您没有指定字段,它将停止工作(或者更糟糕的是将数据写入错误的字段)。
答案 2 :(得分:1)
我不知道通过省略字段名称来提高性能,但除了测试/一次性插入之外,我会建议不要使用它。
可读性将受到影响(您必须检查表以查看插入的位置),如果表模式发生更改,您的代码将会中断