sql - SQL 中内联表值函数的性能影响
问题描述
我在数据仓库系统中有一个使用内联表值函数 (ITVF) 的存储过程。如果我将 ITVF 的代码复制到程序本身,那么它会大大提高性能(从 50 秒到 9 秒)。我的印象是 ITVF 的执行就像程序本身的代码一样。
我可以看到使用 ITVF 时查询计划中的实际行数和估计行数之间存在巨大差异。
ITVF 中是否有可能进行参数嗅探?还有什么原因?谢谢。
解决方案
您的函数使查询不可分割,因此查询优化器无法为其创建正确的执行计划。这就是为什么实际行和估计行之间存在巨大差异的原因。
推荐阅读
- swift - 如何将我的应用中的视频保存到 iOS 中的用户照片库中?
- vba - 用于查询 CSV 文件的 ADO 连接字符串 - “不是有效路径..”错误
- asp.net - Transformer 约定 ASP.NET Slugify 参数
- amcharts - 值标签隐藏在上午图表中
- reactjs - 我如何使用 useReducer react js 和 firestore?它总是返回未定义
- php - 如何在 Guzzle 上获取 XML 响应
- python - 在 html 文件烧瓶中动态显示 url_for 图像
- sql - 在mybatis中调用存储过程
- sql - 查询在 scope_identity 上花费更多时间
- javascript - 使用axios将请求从服务器发送到同一台服务器