怎么用hint做sql性能优化

怎么用hint做sql性能优化,第1张

在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等。在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包。使用STA一定要保证优化器是CBO模式下。

执行DBMS_SQLTUNE包进行sql优化需要有advisor的权限:

SQL>create user dave identified by dave

用户已创建。

SQL>grant connect,resource to dave

授权成功。

SQL>grant advisor to dave

授权成功。

下面简单介绍一下如何优化一条找到的问题语句。

create table bigtab as select rownum as "id",a.* from sys.all_objects a

create table smalltab as select rownum as "id", a.* FROM sys.all_tables a

然后多运行几次下面的脚本,增加表里的数据:

insert into bigtab select rownum as "id",a.* from sys.all_objects a

insert into smalltab select rownum as "id", a.* FROM sys.all_tables a

你这个问题有点难回答,就oracle的hints来说,有的时候使用起来反而效果不好,所以一般并不指定hints,而交给oracle自行选择优化方案来处理。如果确实需要,也是具体分析并反复实验才能找到最佳方法。比如

/*+ INDEX_FFS(TABLE INDEX_NAME) */

对指定的表执行快速全索引扫描,而不是全表扫描的办法

/*+ INDEX_DESC(TABLE INDEX_NAME)*/

表明对表选择索引降序的扫描方法.

/*+ INDEX(TABLE INDEX_NAME) */

表明对表选择索引的扫描方法.

。。。。。等等。

使用hints只能作为优化查询的措施之一,从根本上解决还要想其他办法,如使用负载均衡、分区表、物化视图、合理的索引等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11868586.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存