表t1,字段f1, f2, f3, en 类型都是nvarchar(max)
en字段有重复值,想去掉en重复值后,前几个字段的值任取,存入表t2
语句如下,执行了好久未果,数据在1KWselect max(f1) f1,max(f2) f2,max(f3) f3,en into t2 from t1
group by en
请教下有什么更有效率的方法,谢谢。

解决方案 »

  1.   

    1kw本来会很慢了。
    ;with cte as (
     select f1,f2,f3,en,rn=(partition by en order by f1) from tb
    )
    select * into t2 from cte where rn=1;
      

  2.   

    ;with cte as (
     select f1,f2,f3,en,rn=row_number() over(partition by en order by f1) from tb
    )
    select * into t2 from cte where rn=1;
      

  3.   

    select * from (select row_number() over(partition by en order by getdate()) no,* from tb)t
    where no=1
      

  4.   

    語句簡單,沒有什麼可優化的可用嘗試建一下復合索引Create index IX_T1_EN_F1_F2_F3 on T1(en,f1,f2,f3)
      

  5.   

    本帖最后由 roy_88 于 2011-09-02 17:01:59 编辑