我应该在几列上的两个表上做几次更新。表格大约是100万行。我必须在3个不同的服务器上进行更改。更新很简单,只需删除子字符串即可。子字符串长约200个字符,列为VARCHAR(MAX)
。此更改将影响大约三分之一的行。这是查询:
DECLARE @myVar varchar(250) = 'blablabla2345f25wdf34gqefblablabla...blablablabla'
UPDATE myTable
SET myCol = REPLACE(myCol, @myVar, '')
WHERE myCol LIKE '%' + @myVar + '%'
问题是我开始使用一个表并且正在执行loooong,我在10分钟后停止执行。第一台服务器只是测试/沙盒服务器,但其他服务器是预生产和生产。有关如何加快查询的任何建议吗?
答案 0 :(得分:3)
它缓慢的原因是因为你的WHERE语句没有命中任何索引。就像字符串以通配符开头时不能使用索引一样。根据服务器的不同,如果您的搜索字词为“someterm%”
,则可以使用索引有没有办法可以修复你的查询,以便有一个索引供它查找?
答案 1 :(得分:2)
三个原因(至少):
除非您可以过滤其他字段,否则我无法想到加快速度的方法。批量运行将减少事务日志开销量,并显示增量进度,至少感觉就像它变得更快。