You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于另一表ID更新表记录:SQL语句正确性与效率问询

关联表更新的SQL语句分析

数据表说明

SALES表

IDDATEMODIFIED
1002023/4/25
2002023/4/27

LINES表

IDTRANSACTIONDATEMODIFIED
1100null
2100null
3100null
4200null
5200null

语句正确性验证

你的需求是将LINES表中TRANSACTION匹配SALES表ID的行,同步对应SALES行的DATEMODIFIED值。你编写的SQL逻辑上完全符合需求,但存在表名笔误:LINE应改为LINES,修正后的语句如下:

UPDATE a
SET a.DATEMODIFIED = b.DATEMODIFIED 
FROM LINES AS a
INNER JOIN SALES AS b ON a.TRANSACTION = b.ID

该语句通过TRANSACTION与ID的关联,能准确完成目标字段的更新。

百万级数据量的性能优化建议

要保证大表更新的效率,核心优化点在于索引:

  • 确认SALES表的ID列有主键索引(主键默认自带索引,一般无需额外操作)
  • 给LINES表的TRANSACTION列创建单独索引,避免关联时的全表扫描:
    CREATE INDEX idx_lines_transaction ON LINES(TRANSACTION);
    
  • 若数据库支持并行执行(如SQL Server的MAXDOP配置、MySQL的InnoDB并行参数),可根据服务器资源调整并行设置,提升更新速度。
  • 由于你只需要更新有匹配关系的行,INNER JOIN是最优关联方式,它会自动过滤无匹配的行,减少不必要的计算。

内容的提问来源于stack exchange,提问作者obautista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:45:15