好的,我正在考虑可能减少这种情况(作为一种练习而不是需要提醒你),似乎我收到这个警告是关于什么似乎是一个性能更好的查询,而不是关于需要更多内存来执行的查询?这很奇怪还是我只是想多了?
有人想在这里教育我(对不起大图)?
第一次查询并将鼠标悬停在:
UPDATE c SET c.scust_phone = cc.scontract_holder_hphone
FROM #Claims c
INNER JOIN SCS.scs_auto_sra.scs_contracts cc ON c.icontract_id = cc.icontract_id ;
第二个查询并将鼠标悬停在:
UPDATE c SET c.scust_phone = cc.scontract_holder_hphone
FROM #Claims c
INNER JOIN
(
SELECT icontract_id, scontract_holder_hphone
FROM SCS.scs_auto_sra.scs_contracts cc
WHERE EXISTS (SELECT icontract_id FROM #Claims x WHERE x.icontract_id = cc.icontract_id )
) cc ON c.icontract_id = cc.icontract_id ;
实际上,过多内存授予的警告使用了硬编码逻辑。当分配的内存的某个百分比未使用但不考虑浪费的内存量时,它会发出警报。
它不能被“信任”,如果像在这种情况下,它只有 1Mb 被分配而不被使用,你不应该担心它。
我见过这样的情况(分配了 1Mb,未使用 1Mb)和分配了 256Mo 并且使用了 136Mo(因此未使用 120Mo)并且没有警告的情况。