sql - 如何为单个查询缓存函数的返回值
问题描述
我想在我的单个查询中使用 getdate() 函数 3-4 次进行验证检查。但是我希望每次我期望在单个查询执行中获得当前日期时间时,我都会在所有 3-4 个地方获得相同的日期。从技术上讲,计算机的速度不是那么快,我将在所有查询的地方获得相同的日期时间 99.9%。但理论上它可能会导致错误。那么如何通过调用一次来缓存该 getdate 返回并在查询中使用该缓存值。
但要补充一点,我想在检查约束中写这样的语句,所以我不能声明局部变量,或者任何这样的东西。
解决方案
SQL Server 具有运行时常量函数的概念。描述这些的最好方法是执行引擎做的第一件事是从查询计划中提取函数引用,并在每个查询中执行每个这样的函数。
请注意,函数引用似乎是基于列的。所以不同的列可以有不同的值,但不同的行在一个列中应该有相同的值。
此类别中最常见的两个函数是getdate()
和rand()
。具有讽刺意味的是,我发现这对 是一件好事getdate()
,但对rand()
(什么样的随机数生成器总是返回相同的值?)是一件坏事。
出于某种原因,我找不到有关运行时常量函数的实际文档。但这里有一些受人尊敬的博客文章解释了这个问题:
推荐阅读
- r - 更改 gwidgets2 中按钮的大小 size<-function 给出错误
- php - WooCommerce:在客户电子邮件中显示购买产品的图片和链接
- reactjs - react-three-fiber如何提取和播放动画
- kubernetes - 如何为辅助控制平面节点生成 kubeadm 令牌
- javascript - 如何更改放置在 json 数组中 json 对象中的数组内的值?
- javascript - 从 'react-router-dom 中的历史记录中删除特定条目
- python - 如何从这些数字中获取日期
- javascript - 输入类型文件只接受一种类型的应用程序,没有 allFiles 选项
- r - 在 R 中的 X 轴上显示标签
- typescript - 为什么使这个变量可以为空会在 VSCode 中产生 linting 错误?