日期:2014-05-18  浏览次数:20436 次

问下什么是执行计划
我们公司用ORACLE数据库,经常听他们说执行计划,

问题1:请问什么是执行计划
问题2:SQL SERVER中有执行计划吗?
问题3:可以手动停止执行计划吗?
问题4:数据库系统什么时候,更新执行计划,(如果执行计划中的一条长时间不用,会被清除吗)?

------解决方案--------------------
问题1:请问什么是执行计划
数据库内部对SQL语句分析后决定的执行路径和执行步骤

问题2:SQL SERVER中有执行计划吗?


问题3:可以手动停止执行计划吗?
不能

问题4:数据库系统什么时候,更新执行计划,(如果执行计划中的一条长时间不用,会被清除吗)?
对于一个语句,第一次执行会生成执行计划,并缓存在内存,如果在缓存被替换之前有可用的SQL语句执行,会使用缓存的执行计划。也就是说执行计划没有保存和清除,只有缓存和缓存被替换


------解决方案--------------------
问题1:请问什么是执行计划
--> 执行SQL的步骤及其先后顺序.

问题2:SQL SERVER中有执行计划吗?
--> 当然有.

问题3:可以手动停止执行计划吗?
--> 执行计划是名词,何谓停止.

问题4:数据库系统什么时候,更新执行计划,(如果执行计划中的一条长时间不用,会被清除吗)?
--> 默认可复用执行计划,当以下情况之一时,不复用.
1.执行的SQL不一致时,包括字母大小写,空格的不一致.
2.当数据表统计信息有较大变更时(如大批导入数据).
3.当执行的SQL有被指定recompile选项时.


------解决方案--------------------
问题1:请问什么是执行计划?
回答:简单地说,就是完成某个功能的详细过程。因为完成某个功能可能会有很多种方法,在ORACLE中多指执行顺序和执行方式。与之相关念 rowid:伪列

问题2:SQL SERVER中有执行计划吗?
回答:SQL SERVER中当然也有。因为执行计划一个主要目的是用来优化查询索引功能的,比如:当你构建SQL语 句时,你可以按下CTRL+L看语句是如何执行的,使用索引扫描还是表扫表,进而优化性能。

问题3:可以手动停止执行计划吗?
回答:执行计划是系统内部的一种执行方法,不是一个具体的执行进程,所以不能手动停止。

问题4:数据库系统什么时候,更新执行计划,(如果执行计划中的一条长时间不用,会被清除吗)?
回答:一般第一次执行SQL语句时就生成了执行计划,执行计划是数据库系统根据成本优化或规则优化产生的,一旦生成,一般不再改动。如楼上所说3中情况和表的改动时会重新生成执行计划。PLSQL DEVELOP 按F5可以看到执行计划。










------解决方案--------------------
在sql server的查询分析器中,选中要执行的查询语句,然后按Ctrl+L就可以出现查询计划,不过这样的执行计划只是预估计的执行计划(即未真正执行sql语句),要查看实际的执行计划,可以单击:查询->包括实际的执行计划(U),这样,生成的计划是sql语句执行的实际的执行计划。你可以实际操作一下!