可以改一下检测时间 like cast(@year as varchar)+'%'

解决方案 »

  1.   

    这样不行 必须要对检测时间字段进行转化 convert(varchar(12),检测时间,121)
      

  2.   

    只要对列使用函数..该列的索引将不起作用..substring(aa,1,2)='xx'
    只要对列进行计算..该列的索引将不起作用..aa+10=20
    某些情况下的LIKE操作.该列的索引将不起作用..aa LIKE '%10%'
    某些情况使用反向操作.该列的索引将不起作用..aa<>2
    在WHERE中使用OR时,有一个列没有索引.那么其它列的索引将不起作用..
      

  3.   

    不要这么写直接写成:where 检测时间 >='2008-1-1' and 检测时间<'2009-1-1'这样就可以了,index seek一般走,效率不错。
      

  4.   

    这样效率是没问题 可是不能确定是哪一年啊 只有int型的变量 @year  请问还有没有高招?
      

  5.   

    只有int year 2008你自己拼啊where dField >= RTRIM(@year) + '-01-01' and dField < RTRIM(@year + 1) + '-01-01'
      

  6.   

    我晕,建议你先找本sql的书看下int 的@year 先转成字符串再拼成 '2008-1-1'     cast(@year as varchar(4) )+'-1-1'