where year(a.CreateDate)=@pDate 
请问这个查询如何优化,@pDate是2008这样的年份  CreateDate字段是2008-10-30 这样的日期

解决方案 »

  1.   

    可以在CreateDate 上建個索引.然後
    where a.CreateDate like '2008%'
      

  2.   

    優化不知道,但樓上誤導人我還是知道的。
    日期型不可用a.CreateDate like '2008%' 這樣。
      

  3.   


    a.CreateDate Between CAST(CAST(@pDate*10000+101 as varchar(8)) as DATETIME)
                     AND CAST(CAST(@pDate*10000+1231 as varchar(8)) as DATETIME)
      

  4.   

    恩,楼上方法不行,我已经知道怎么做了
    where a.CreateDate between @date1 and @date2
    @date1、@date2是@pDate的最小时间和最大时间 如@pdate是2007 则分别是2007-1-1和2007-12-31 
      

  5.   


    最好不要用变量......like 
      

  6.   

    单从这个查询来看,要优化可以对a表或视图(a可能只是一个别名,这里不清楚就把它当表或视图看待)以year(CreateDate)建立一个索引。