【发布时间】:2020-06-03 09:24:48
【问题描述】:
我最近一直在研究如何优化我的 INSERT 查询的可能方法。我通常做一个批量大小为 100 的 INSERT。
我当前的示例查询:
IF EXISTS (SELECT * FROM [db].[Prices] WHERE Source = 'Cars' AND TradeDate = convert(datetime,'18-02-20',5) AND Product = 'Audi' AND Price=NULLIF('5.00000',''))
BEGIN DELETE FROM [db].[Prices] WHERE Source = 'Cars' AND TradeDate = convert(datetime,'18-02-20',5) AND Product = 'Audi' AND Price=NULLIF('5.00000','') END;
INSERT INTO [db].[Prices] VALUES( 'Cars', convert(datetime,'18-02-20',5), 'APR25', NULL, 'Audi', NULLIF('5.00000',''), convert(datetime,'15-04-25',5), '1', GETUTCDATE(), convert(date,NULL,105), convert(date,NULL,105));
我从研究中发现的可能优化如下:
- 将 * 替换为字段
- 将 WHERE 替换为 INNER JOIN
由于这对我来说相当新,因此欢迎提出任何建议。似乎最大的潜力在于改变核心结构(如果存在 - 删除 - 插入)。
感谢您的帮助。
【问题讨论】:
-
2 位数年份?不不不不不! Y2k 之后的 20 年没有任何借口!
标签: sql sql-server performance tsql sql-insert