cde*_*zaq 0 timeout sql-server-2005
我从客户那里获得了一个包含500,000个用户更新的更新信息的大文本文件.但是,当我处理此文件时,我经常遇到SQL Server超时错误.
这是我在VB应用程序中遵循的处理数据的过程(通常):
DELETE * FROM tempTable)问题是我经常运行像UPDATE tempTable SET user_id = (SELECT user_id FROM myUsers WHERE external_id = tempTable.external_id这样的命令,这些命令经常超时.我已经尝试将时间超过10分钟,但它们仍然失败.现在,我意识到500k行是不容易操作的行数,但我认为据称能够处理数百万行的数据库应该能够很容易地处理500k.我是如何处理这些数据的?
请帮忙.任何和所有建议欢迎.
像你在问题中给我们的子查询:
UPDATE tempTable SET user_id = (SELECT user_id FROM myUsers WHERE external_id = tempTable.external_id)
Run Code Online (Sandbox Code Playgroud)
一次只有一行好,所以你必须循环.思考集基于:
UPDATE t
SET user_id = u.user_id
FROM tempTable t
inner join myUsers u ON t.external_id=u.external_id
Run Code Online (Sandbox Code Playgroud)
并删除你的循环,这将更新一个语句中的所有行,并显着更快!