为什么这样更快并且使用安全吗?(第一个字母在字母表中)
长话短说,我们正在用很小的人表中的值更新小的人表。在最近的测试中,此更新大约需要5分钟才能运行。 我们偶然发现了似乎最简单的优化方法,该方法似乎完美无缺!现在,同一查询可以在不到2分钟的时间内运行,并且可以完美地产生相同的结果。 这是查询。最后一行添加为“优化”。为什么查询时间急剧减少?我们错过了什么吗?这会在将来引发问题吗? UPDATE smallTbl SET smallTbl.importantValue = largeTbl.importantValue FROM smallTableOfPeople smallTbl JOIN largeTableOfPeople largeTbl ON largeTbl.birth_date = smallTbl.birthDate AND DIFFERENCE(TRIM(smallTbl.last_name),TRIM(largeTbl.last_name)) = 4 AND DIFFERENCE(TRIM(smallTbl.first_name),TRIM(largeTbl.first_name)) = 4 WHERE smallTbl.importantValue IS NULL -- The following line is "the optimization" AND LEFT(TRIM(largeTbl.last_name), 1) IN ('a','à','á','b','c','d','e','è','é','f','g','h','i','j','k','l','m','n','o','ô','ö','p','q','r','s','t','u','ü','v','w','x','y','z','æ','ä','ø','å') 技术说明:我们知道要测试的字母列表可能还需要几个字母。我们还意识到使用“ DIFFERENCE”时明显的错误余量。 查询计划(常规): https : //www.brentozar.com/pastetheplan/? id …