首页 > 数据库 >SQL语句的优化方法一

SQL语句的优化方法一

时间:2023-05-11 16:56:43浏览次数:38  
标签:语句 INDEX BSEMPMS NO WHERE EMP SQL 优化 SELECT

现场工作过程中,在对一个SQL语句进行优化分析的时候,我们经常会用到HINT(提示),有时候会发现DBA在使用了HINT后,ORACLE的性能有了明显提高,它主要是通过嵌入到SQL语句里来完成的,现总结一下在SQL语句优化过程中常见Oracle HINT的用法:

1. /*+ALL_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.
例如:
SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

2. /*+FIRST_ROWS*/
表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.
例如:
SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

3. /*+CHOOSE*/
表明如果数据字典中有访问表的统计信息,将基于开销的优化方法,并获得最佳的吞吐量;
表明如果数据字典中没有访问表的统计信息,将基于规则开销的优化方法;
例如:
SELECT /*+CHOOSE*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

4. /*+RULE*/
表明对语句块选择基于规则的优化方法.
例如:
SELECT /*+ RULE */ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT';

5. /*+FULL(TABLE)*/
表明对表选择全局扫描的方法.
例如:
SELECT /*+FULL(A)*/ EMP_NO,EMP_NAM FROM BSEMPMS A WHERE EMP_NO='SCOTT';

6. /*+ROWID(TABLE)*/
提示明确表明对指定表根据ROWID进行访问.
例如:
SELECT /*+ROWID(BSEMPMS)*/ * FROM BSEMPMS WHERE ROWID>='AAAAAAAAAAAAAA'
AND EMP_NO='SCOTT';

7. /*+CLUSTER(TABLE)*/
提示明确表明对指定表选择簇扫描的访问方法,它只对簇对象有效.
例如:
SELECT /*+CLUSTER */ BSEMPMS.EMP_NO,DPT_NO FROM BSEMPMS,BSDPTMS
WHERE DPT_NO='TEC304' AND BSEMPMS.DPT_NO=BSDPTMS.DPT_NO;

8. /*+INDEX(TABLE INDEX_NAME)*/
表明对表选择索引的扫描方法.
例如:
SELECT /*+INDEX(BSEMPMS SEX_INDEX) USE SEX_INDEX BECAUSE THERE ARE FEWMALE BSEMPMS */ FROM BSEMPMS WHERE SEX='M';

9. /*+INDEX_ASC(TABLE INDEX_NAME)*/
表明对表选择索引升序的扫描方法.
例如:
SELECT /*+INDEX_ASC(BSEMPMS PK_BSEMPMS) */ FROM BSEMPMS WHERE DPT_NO='SCOTT';

10. /*+INDEX_COMBINE*/
为指定表选择位图访问路经,如果INDEX_COMBINE中没有提供作为参数的索引,将选择出位图索引的布尔组合方式.
例如:
SELECT /*+INDEX_COMBINE(BSEMPMS SAL_BMI HIREDATE_BMI)*/ * FROM BSEMPMS
WHERE SAL<5000000 AND HIREDATE<SYSDATE;

 

标签:语句,INDEX,BSEMPMS,NO,WHERE,EMP,SQL,优化,SELECT
From: https://www.cnblogs.com/techcq/p/17391578.html

相关文章

  • postgresql 更改目类后.conf的位置和shared_preload_libraries写多个的写法
    postgresql更改目类后.conf的位置和shared_preload_libraries写多个的写法postgresql更改了pgdata后。conf会到新的pgdata里面才能看到 需预加载加载多个的话按下面这样写shared_preload_libraries='pg_strom,pipelinedb'  shared_preload_librariesshared_preloa......
  • SQL 如何优化
    查看查询字段是否建立索引查看查询字段是否命中索引查询结果不用*,把需要字段详细列举使用explain查看Mysql是如何执行SQL语句模糊查询%放在后面不然索引失效where查询条件后尽量不要使用!=、<>、or等查询语句,会导致查询失效多表查询使用innerjoin查询《若要使用leftjoin......
  • m基于遗传优化的阈值分割算法的雾天图像去雾增强matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要       遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”......
  • PostgreSQL如何查询IO消耗最高的SQL及优化,pg_stat_statements插件安装及使用
    PostgreSQL如何查询IO消耗最高的SQL及优化,pg_stat_statements一、安装pg_stat_statements插件二、加载pg_stat_statements模块三、配置pg_stat_statements采样参数四、创建pg_stat_statementsextension五、分析SQL查询哪些sql语句执行效率慢:重置统计信息普通用户需执......
  • VMD-SSA-LSSVM,基于VMD分解的SSA优化LSSVM做短期电力负荷预测,预测精度非常高!
    VMD-SSA-LSSVM,基于VMD分解的SSA优化LSSVM做短期电力负荷预测,预测精度非常高!结果分析均方根误差(RMSE):0.17332平均绝对误差(MAE):0.12619平均相对百分误差(MAPE):2.0976%ID:46200697697328495......
  • Postgresql集群搭建与PostGIS安装
    目录Postgresql集群搭建手册一、软件安装预先准备工作二、Postgresql安装(附带PostgreGIS安装)2.1potgresql安装2.2postgres常见错误说明三、PostgreGIS安装postGIS四.Postgresql数据库备份与恢复五.postgresSQL集群重启Postgresql集群搭建手册一、软件安装预先准备工作Linu......
  • SQL Server非默认实例、默认端口、更改端口后 进行发布订阅 配置
    角色服务器名称实例名称端口发布服务器TEST1mysqlserver14333订阅服务器TEST2mysqlserver14333    解决办法:需要在A和B服务器上分别配置对方的数据库别名操作:SQLServer网络配置->SQLNativeClient10.0配置->别名->新建别名  要求......
  • SSA-LSTM,即麻雀搜索算法SSA优化LSTM的程序,麻雀搜索算法是2021年提出来的,比较有创新性
    SSA-LSTM,即麻雀搜索算法SSA优化LSTM的程序,麻雀搜索算法是2021年提出来的,比较有创新性。本程序优化隐含层神经元个数,最佳学习率,最佳迭代次数。相较于不经过优化的LSTM,预测精度明显提高。程序内注释详细,直接替换数据就可以用,可学习性强。直接运行可以出拟合预测图,优化迭代图,多种评价......
  • oracle 开启tnsping trace、sqlnet trace 、event10257
    在sqlnet.ora文件中加入以下参数:TNSPING.TRACE_LEVEL=SUPPORTTNSPING.TRACE_DIRECTORY=d:\oracle\trace“tnsping”工具的预期用途仅仅是测试OracleNet别名中指定的数据库侦听器是up还是down。“tnsping”工具不打算用作OracleNet性能测量工具B.Sql*nettraceSE......
  • spark-sql的使用
    使用spark-sql操作hive数据仓库的前提是需要把hive配置文件hive-site.xml复制到sparkconf目录下进入到sparkbin目录下使用命令开启一个spark-sql:./spark-sql--masterlocal[*]--jars/usr/hdp/current/hive-server2/lib/mysql-connector-java.jar因为我们要操作hive,因此......