为什么这两个语句的cpu cost相差10倍呢??
select col1 from a where col2 = 1 order by col1;select * from (select col1 from a where col2=1) order by col1;--这个执行计划明显的小些。。

解决方案 »

  1.   

    视图存在一些缺点,主要如下。● 性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。● 修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。 
      

  2.   


    select col1 from a where col2 = 1 order by col1;
    select * from (select col1 from a where col2=1) order by col1;--这个执行计划明显的小些。。
    这个问题要从全局考虑。
    显然你得出的结论要从你的当前环境以及测试数据量上做分析。个人觉得什么情况对应用什么写法这才是最优,而不是单纯的看语句怎么写。如果那样SQL就显得太死板了。