怎么使用plsql查看执行计划

好了,这一步已经基本完成了。
这正是使用 PL/SQL Developer 查看执行计划的方式。
我自己也经常使用这个,尤其是在写复杂的SQL之前或者运行缓慢的时候,需要检查一下计划是否正确。

但是,有几点我必须向您提及,我自己遇到过或我知道的陷阱:
首先,您提到的 F5 键盘快捷键通常意味着执行 SQL 语句。
严格来说,如果您想实际查看执行计划,您可能需要按 F4 或右键单击并选择“解释计划”(取决于您的版本)。
有时按F5 会直接打开执行计划窗口,但这并不总是可靠的。
因此,最好先尝试F4 如果它不起作用,请尝试使用右键单击菜单,或者只是寻找看起来有吸引力的闪电图标。

其次,你把执行流程描述的非常清楚。
但在实际使用中,我发现对于特别复杂的查询,优化器给出的计划有时和我们想象的不一样。
例如,如果链接的顺序稍有改变,则总体成本可能会显着不同。
因此,当您查看计划时,您不仅可以查看缩进,还可以查看每个操作本身的成本。

第三,在成本方面不要太迷信。
当数据量较小时,同一条SQL的成本可能并不高,但随着数据量的增加,成本就会飙升。
有时看似成本低廉的步骤实际上可能会拖累整个查询。
我以前处理过一个案例。
优化器认为哈希连接的成本并不高。
一旦数据执行完毕,join直接消耗CPU高达9 5 %。
最终还是要看实际运行时间。

第四,从操作类型上来说,你提到的全表扫描(TABLE ACCESS FULL)需要优化。
索引扫描(INDEX SCAN)也要看情况。
如果是范围扫描(INDEX RANGE SCAN),效率还不错。
但是,当是全索引扫描(INDEX FULL SCAN)时,尤其是索引很大的时候,有时直接对值建立索引(INDEX UNIQUE SCAN)会更好。
2 02 2 年,我在上海的一个客户就遇到过这样的情况。
他们的一个表有几百万行数据,所以他们使用了全索引扫描,使得I/O非常高。
改用索引值后,性能得到改善。

无论如何,这取决于你。
一旦您熟悉了这些工具,您在查看计划时将能够看到很多细节。
但仅仅看计划是不够的。
需要结合实际的数据量、表结构和索引情况,有时还需要改变SQL本身。
我还在思考这个问题:如何快速判断一个执行计划好不好?有没有更直观的方法呢?

PLSQL怎么查看表结构

这是一个陷阱,不要相信,不要做。
只需使用 DESCRIBE 表名;就是这样。