我在查询一个包含所有有效日期时间的varchar列。在查询中,我将该列转换为datetime。有什么办法将varchar列索引为日期时间?
请记住,将列的数据类型定义更改为datetime不是一个选项。相信我,这不是一个选择。
通过查询分析,我发现查询会更快,如果我可以在此列上添加索引。但它是varchar。如果我添加了一个索引,它会根据它的varchar值进行索引,对吗?但是我想让它在日期时间值上索引,是的?
有什么我可以在这里做索引?
我在查询一个包含所有有效日期时间的varchar列。在查询中,我将该列转换为datetime。有什么办法将varchar列索引为日期时间?
请记住,将列的数据类型定义更改为datetime不是一个选项。相信我,这不是一个选择。
通过查询分析,我发现查询会更快,如果我可以在此列上添加索引。但它是varchar。如果我添加了一个索引,它会根据它的varchar值进行索引,对吗?但是我想让它在日期时间值上索引,是的?
有什么我可以在这里做索引?
有效数据是第一优先级,因为任何将数据转换为DATETIME的方法将在午夜时间返回1900年1月1日的值,此时值与接受的格式不匹配。
SQL Server没有基于函数的索引,那么你的选择是:
您是否考虑在这些生成的表之上构建索引视图?您可以在视图中定义您的varchar-to-datetime转换,然后为结果列编制索引。
查看Improving Performance with SQL Server 2005 Indexed Views了解更多信息。我不是使用索引视图的专家,我只读过他们。所以我会留给你看看你的情况是否会是正确的解决方案。