SQL语句是如何执行的?

wtjd 2006-12-07 10:08:15
在项目开发时,会经常写大量的SQL语句,可是为什么每次写SQL语句都有疑惑的感觉呢?后来我想了想,还是自己对SQL语句是如何被执行的没有弄清楚。比如写

一个查询语句,语句里面有ORDER BY ,GROUP BY 等等。它具体是如何执行的,最

终取出结果集的呢?总之,对于写SQL语句我仿佛找不到一个很好思路。对于我这样

的问题,望各位大虾帮忙。
...全文
219 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtjd 2006-12-12
  • 打赏
  • 举报
回复
谢谢xb_feng()

21ithorse 2006-12-09
  • 打赏
  • 举报
回复
set autotrace on
当你执行SQL后就有一串执行步骤,然后参考执行步骤,提出好的解决方案
tgm78 2006-12-07
  • 打赏
  • 举报
回复
看执行计划,可以知道oracle到底是按照什么顺序执行sql的
xb_feng 2006-12-07
  • 打赏
  • 举报
回复
SQL语言是第四代语言,和我们常用的编程语言(第三代语言)不同的是:第四代语言描述的是你要的执行结果,而不是执行过程(这是第三代语言所做的事)。

因此SQL的风格与常用的编程语言是不一样的,从这个思路去思考就可以理解SQL了,而没有必要去关心具体是怎么执行的(当然,这常常也是要考虑的)。

就如同你坐出租车和你自驾车的区别,坐出租车的你只要告诉司机你要去的地方(第四代语言),而自驾车的你要关心的是走哪条路(第三代语言)。

当然,你坐出租车也会关心走哪条路,但这是为了更省钱或省时间,这时你可以问一下司机打算如何走(看执行计划)。但你也可以不关心走哪条路,只说目的地。

因此你说的你对SQL的疑惑,我觉得不是去了解SQL语句是如何被执行能够解决的,而是思维方式的问题,要了解SQL的语义。想想吧,你要的结果是什么,别管过程,这样你就能理解SQL了。至于SQL如何被执行,是DBMS管的事,可以说同样的SQL语句在不同的数据库里,甚至在不同的执行过程中其执行计划都可能不一样。当然你可以通过看执行计划来了解执行过程,但这样做的目的应该是为了提高性能,而不是用来理解SQL。
wtjd 2006-12-07
  • 打赏
  • 举报
回复
执行计划?
有相关的资料可以看吗?
楼上,

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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