我在查询的where
子句中使用下一个条件:
CONVERT(INT, CONVERT(VARCHAR(10), DA.ACCESS_DATE, 112))
> = CONVERT(INT, CONVERT(VARCHAR(10), CCM.START_DATE, 112))
AND
CONVERT(INT, CONVERT(VARCHAR(10), DA.ACCESS_DATE, 112))
< ISNULL(convert(int, convert(varchar(10), CCM.[END_DATE], 112)), 20161001)
使用上述条件运行查询时,返回输出需要花费大量时间。
有什么方法可以获得更快的结果吗?
答案 0 :(得分:3)
DA.ACCESS_DATE >= CCM.START_DATE AND
DA.ACCESS_DATE < COALESCE(CCM.[END_DATE], '20161001')
如果日期确实包含时间组件而你想忽略它们,那么你应该转换为date
,但只能删除时间组件。
我应该指出,这可能无法提高效果。此版本有可能利用可用的索引 - 如果它们合适的话。使用索引可以加快查询速度。