标签:函数 完成 告诉 操作 就会 server 查看 多行 执行计划
背景:实施人员反馈 函数 select * from f_getHomeInfo(‘01‘,‘‘,‘‘)非常慢需要9秒,而以前只要1秒。
操作:1、我把函数的内容拿出来运行,非常快,依然是1秒完成
2、我把函数的内容放到存储过程去执行,非常慢,需要9秒
3、对比函数的执行计划和SQL的执行计划,完全一样
4、仔细查看执行计划发现预估一行,实际3000多行,于是猜想是预估内存太少导致的问题,想要提高预估内存,就要提高预估行,于是我使用了OPTION (OPTIMIZE FOR UNKNOWN)这个暗示,告诉优化器这个查询条件不太确定,于是优化器就会预估一个比较稳妥的行数。
5、修改完成之后再次运行,回到正常速度1秒
标签:函数 完成 告诉 操作 就会 server 查看 多行 执行计划
原文地址:https://www.cnblogs.com/chenshiheng/p/9892461.html