问题是关于数据库的SQL
遗留代码MySQL
。
众所周知,在执行INSERT ... ON DUPLICATE KEY UPDATE
语句时,VALUES(col_name)
函数可用于从 INSERT 部分引用列值,而不是在那里传递确切的值:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE b=VALUES(b), c=VALUES(c)
我的遗留代码包含许多参数化样式的巨大插入(它们用于批量插入):
INSERT INTO table (a,b,c, <...dozens of params...>) VALUES (?,?,?,<...dozens of values...>)
ON DUPLICATE KEY UPDATE b=?, c=?, <...dozens of params...>
问题是:如果我将所有这些查询更改为使用VALUES(col_name)
函数(UPDATE
部分),它会提高批量插入的性能吗?
jdbc
我的查询是使用驱动程序从 java 代码执行的。所以,我猜,对于长文本值,它应该显着减少查询的大小。MySQL
自己呢?一般来说,它真的会让我提高速度吗?