1
3
我猜这是某种虫子。在SQL2005中,我能够创建这样一个索引视图,而没有任何问题(代码如下)。当我尝试在SQL 2000上运行它时,我得到了和您得到的相同的错误。 下面的内容似乎适用于SQL 2000,但我收到一个警告,即索引将被忽略,每次从视图中选择索引时都必须进行转换。
在SQL 2005中工作:
|
2
2
您的列[datetime_column]是否将默认值设置为“getDate()”?? 如果是这样,由于getDate()函数是非确定性的,这将导致此错误… 用户定义函数是确定性函数还是非确定性函数取决于函数的编码方式。用户定义函数具有确定性,如果:
不符合这些条件的用户定义函数被标记为不确定函数。用户定义函数体中不允许使用内置的非确定性函数。 |
3
1
试试这个:
它应该比convert选项快得多。 |
4
1
以下是我回答原始问题的最佳答案: 试试这个:
要测试,请尝试以下操作。请注意,在引用函数时,对计算列使用“persisted”和对[dbo]的使用
现在应该可以在计算列上添加索引(但请参阅后面的gotcha)。
尽可能多次插入一些随机数据,但如果希望测试索引使用/执行计划,则最好插入1000+以上的数据。
得到结果
这就是你要的… 未使用在计算列上创建的索引!相反,即使在持久化字段testfoordate上选择数据,sqlserver(或者至少是我的版本)也更喜欢在testdate上使用索引。
我很肯定(从内存中)从性能的角度来看,计算列和持久列上的索引是有好处的-我猜您只需要尝试/测试自己的特定用法。 (希望我能帮忙!) |
5
0
我建议简单一点:
但我怀疑你也会遇到同样的问题。
现在,如果问题在于回溯到日期时间,那么您可能需要考虑使用
|
6
0
看 that question asked and answered by Cade Roux . 也许解决方案是使用WITHSchemaBinding创建一个函数,然后在计算列中使用它 编辑 我理解您的目标是能够在该列上有一个索引。 如果不能用计算列完成这项工作,那么可能唯一的选择就是创建一个普通列,并在每次更新它所基于的列时修改该列中的数据。(在触发器中说) |
ecology · 基于R中随机生成数集的子集列 2 年前 |
Krischk · 使用python;获取列表中错误项的索引[已关闭] 2 年前 |
Mohona · 对一维数组元素的迭代在几次迭代后给出了索引错误 2 年前 |
X3VI · 熊猫-重命名_轴后无法按预期工作-为什么? 2 年前 |
dam · 为什么这是我使用索引的输出?什么是索引?[闭门] 2 年前 |
Sahil Panhalkar · 显示索引超出范围的列表更新语句 2 年前 |
SpaceBallz · 比较嵌套列表中的值 2 年前 |
startresse · 自定义type\u索引顺序,无boost 2 年前 |