order by的疑问

YY_MM_DD 2012-01-12 04:32:22
为什么这两个语句的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;--这个执行计划明显的小些。。
...全文
134 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
888888888888 2012-01-17
  • 打赏
  • 举报
回复

select col1 from a where col2 = 1 order by col1;


select * from (select col1 from a where col2=1) order by col1;--这个执行计划明显的小些。。


这个问题要从全局考虑。
显然你得出的结论要从你的当前环境以及测试数据量上做分析。个人觉得什么情况对应用什么写法这才是最优,而不是单纯的看语句怎么写。如果那样SQL就显得太死板了。

hyogayu 2012-01-13
  • 打赏
  • 举报
回复
视图有利有弊
阿木王 2012-01-12
  • 打赏
  • 举报
回复
视图存在一些缺点,主要如下。

● 性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。

● 修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。

  • 打赏
  • 举报
回复
你多试几次,基本上没什么差别呀。
Ny-6000 2012-01-12
  • 打赏
  • 举报
回复


帮顶学习

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧