通过分析sql语句的执行计划优化sql
如何执行执行计划——使用提示提示基于成本优化器是聪明的,而且在大多数情况下,它会选择合适的优化,减少管理员的负担。但有时是聪明,聪明,和选择一个糟糕的执行计划使一个语句很慢的执行。在这一点上,DBA是人类干预的需要,并告诉优化器使用我们指定的访问路径或连接类型来生成执行计划,所以这句话可以有效地运行。例如,如果我们认为执行全表扫描一个特定的句子是不是执行索引扫描更有效,我们可以指示优化器使用全表扫描。在Oracle的优化器,干预目的是通过添加一个提示(提示)实现的声明。
提示是Oracle提供的一种机制,告诉优化器按照我们所说的方式生成一个执行计划:
1。使用的优化器类型
2。成本的优化目标的优化,all_rows或first_rows。
3的访问路径。表的全表扫描、索引扫描,或直接使用rowid。
4之间的连接类型。桌子
5之间的连接顺序。桌子
6的平行度。声明
除了规则提示,一旦使用其他提示,语句将自动更改为使用CBO优化器。如果您的数据字典中没有统计数据,则将使用默认统计信息。因此,建议如果使用CBO或提示提示,最好对表和索引进行定期分析。
如何使用提示:
提示仅适用于SQL语句块(语句块,这是确定由选择、更新和删除关键字),而对其他SQL语句或句子的其他部分没有任何影响。例如:2 SQL语句使用UNION操作,如果有一个SQL语句只有一个暗示,暗示没有另一个SQL语句的影响。
我们可以使用注释(注释)添加一个句子的提示,一个块只能有一个注释,而注释只能放在选择、更新或删除关键字之后。
使用提示的语法:
{删除|插入|选择|更新} / * +提示} { { {文本提示文本} }…或{删除|插入|选择|更新} {文本} { } { }——提示提示文本…
注释:
1.delete、插入、选择和更新的关键字识别一个语句块的开始。提示提示只能出现在这些关键字后面,否则提示无效。
2 +说,评论是一个提示,加号必须立即出现在中间,否则就没有空间了。
3.hint是以下细节。如果有多个提示,则每个提示符都需要由一个或多个空格分隔。
4.text是其他明文字说明提示
如果您没有正确指定提示,Oracle将忽略提示并不给出任何错误。