【发布时间】:2011-05-09 02:54:52
【问题描述】:
这更像是一个设计问题,但也与 SQL 优化有关。
我的项目必须将大量记录导入数据库(超过 10 万条记录)。同时,该项目具有检查每条记录的逻辑,以确保它符合可配置的标准。然后它会将记录标记为无警告或在数据库中有警告。插入和警告检查在一个导入过程中完成。
对于每个条件,它都必须查询数据库。查询需要连接另外两个表,有时会在条件内添加额外的嵌套查询,例如
select * from TableA a
join TableB on ...
join TableC on ...
where
(select count(*) from TableA
where TableA.Field = Bla) > 100
尽管查询花费的时间并不明显,但查询整个记录集需要相当长的时间,在服务器上可能需要 4 到 5 个小时。特别是如果有很多条件,最后项目将停止运行导入和回滚。
我尝试将“SELECT * FROM”更改为“SELECT TableA.ID FROM”,但似乎完全没有效果。有没有更好的设计来提高这个过程的性能?
【问题讨论】:
标签: java sql-server performance