毫无疑问,数据库本身处理比你在datatable中转换对象再操作效率高很多。如果只是取出部分数据,那么建议还是放在前台处理排序。

解决方案 »

  1.   

    在更新时不建议写成一个update关联语句
    因为这样造成锁全表的机率加大,导致其它进程无法对表进行写操作,或其它进程有写操作时,造成当前操作的锁等待。可以将select的结果存放在一个临时表里,然后用while循环,进行逐条更新,这样不致于造成大量锁等待.
      

  2.   

    1.对要排序的15个列设置索引,第一个排序列设置为聚集索引.
    2.如果你的表有标识列,试试用临时表获取排列顺序,然后从临时表更新,如:
    select newrank =identity(int,1,1),aid=orderid*1 into # from orders order by requireddate
    update orders set rank1=(select newrank from # where aid=a.orderid) from orders a
    go