请教大家下,在SQL2000里视图使用SELECT  TOP (100) PERCENT from xxx  order by xxxx,排序正确,在SQL2005(2008也是一样)里排序就乱了,按网上的解决方法将top(100)改成TOP(99.9999999999999)能保证排序是正确的,但同样的查询速度远不如SQL2000,要慢20秒,这是怎么回事?应该怎样解决?

解决方案 »

  1.   

    order by xxxx 这个xxxx是什么类型的字段。
      

  2.   


    在SQL 2005/2008中,将TOP(100)Percent ... ORDER BY ...子句忽略掉了,不做处理,所以显得排序乱了。其实SQL 2005/2008中的做法是正确的,而SQL 2000中的做法是错误的,是不符合数据库原则的。视图中的数据本来就不应该有序,强行在视图中对数据进行排序是错误的做法,不但违反规则,而且低效。应该在引用视图时排序,如:select * from viewname order by colname