一个可以提高SQL近200倍的执行效率的方法 LIKE 改 =
因公司业务需要变价格,需要在前台最好是10分钟一次执行如下脚本,结果执行此脚本需要3分钟左右且100%cpu,用户体验太差了。
UPDATE STK_BAR SET NEWRETAILPRICE =F2 FROM STK_BAR BAR ,YHJ_YSJGITEM ITEM
WHERE BAR.ITEM_CODE LIKE ITEM.F1 AND BAR.NEWRETAILPRICE <> ITEM.F2
后来,这样行,影响用户使用,后来想到加主键,索引等,效果不理想,最后想到优化脚本:
UPDATE STK_BAR SET NEWRETAILPRICE =2 FROM STK_BAR BAR ,YHJ_YSJGITEM ITEM
WHERE replace(BAR.ITEM_CODE,' ','') = replace(ITEM.F1,' ','') AND BAR.NEWRETAILPRICE <> ITEM.F2 ---1s 60395 row
结果 ,在1秒钟居然可以执行完。
真是大大出乎我的意料,执行效率,居然提高这么快,
以前也知道LIKE对文本遍历,费时,但是没想到今天效果这么明显。
分享之。
因公司业务需要变价格,需要在前台最好是10分钟一次执行如下脚本,结果执行此脚本需要3分钟左右且100%cpu,用户体验太差了。
UPDATE STK_BAR SET NEWRETAILPRICE =F2 FROM STK_BAR BAR ,YHJ_YSJGITEM ITEM
WHERE BAR.ITEM_CODE LIKE ITEM.F1 AND BAR.NEWRETAILPRICE <> ITEM.F2
后来,这样行,影响用户使用,后来想到加主键,索引等,效果不理想,最后想到优化脚本:
UPDATE STK_BAR SET NEWRETAILPRICE =2 FROM STK_BAR BAR ,YHJ_YSJGITEM ITEM
WHERE replace(BAR.ITEM_CODE,' ','') = replace(ITEM.F1,' ','') AND BAR.NEWRETAILPRICE <> ITEM.F2 ---1s 60395 row
结果 ,在1秒钟居然可以执行完。
真是大大出乎我的意料,执行效率,居然提高这么快,
以前也知道LIKE对文本遍历,费时,但是没想到今天效果这么明显。
分享之。