[Q]怎么避免使用特定索引
[A]在很多时候,Oracle会错误的使用索引而导致效率的明显下降,我们可以使用一点点技巧而避免使用不该使用的索引,如:
表test,有字段a,b,c,d,在a,b,c上建立联合索引inx_a(a,b,c),在b上单独建立了一个索引Inx_b(b)。
在正常情况下,where a=? and b=? and c=?会用到索引inx_a,
where b=?会用到索引inx_b
但是,where a=? and b=? and c=? group by b会用到哪个索引呢?在分析数据不正确(很长时间没有分析)或根本没有分析数据的情况下,oracle往往会使用索引inx_b。通过执行计划的分析,这个索引的使用,将大大耗费查询时间。
当然,我们可以通过如下的技巧避免使用inx_b,而使用inx_a。
where a=? and b=? and c=? group by b||'' --如果b是字符
where a=? and b=? and c=? group by b+0 --如果b是数字
通过这样简单的改变,往往可以是查询时间提交很多倍
当然,我们也可以使用no_index提示,相信很多人没有用过,也是一个不错的方法:
select /*+ no_index(t,inx_b) */ * from test t
where a=? and b=? and c=? group by b
[Q]Oracle什么时候会使用跳跃式索引扫描
[A]这是9i的一个新特性跳跃式索引扫描(Index Skip Scan).
例如表有索引index(a,b,c),当查询条件为
where b=?的时候,可能会使用到索引index(a,b,c)
如,执行计划中出现如下计划:
INDEX (SKIP SCAN) OF 'TEST_IDX' (NON-UNIQUE)
Oracle的优化器(这里指的是CBO)能对查询应用Index Skip Scans至少要有几个条件:
1 优化器认为是合适的。
2 索引中的前导列的唯一值的数量能满足一定的条件(如重复值很多)。
3 优化器要知道前导列的值分布(通过分析/统计表得到)。
4 合适的SQL语句
等。
分享到:
相关推荐
ft_bigID(生成19位的Long Integer类型的数据),生成唯一的随机码。
5. 重启监听器以应用配置更改,命令包括:`srvctl stop listener -n ora19crac1`,`srvctl stop listener -n ora19crac2`,`crsctl stat res -t`,`srvctl start listener -n ora19crac1`,和`srvctl start listener...
《Oracle 19C SQL调优指南》是针对Oracle数据库管理员(DBA)的重要参考资料,尤其适合那些希望提升SQL性能的专业人士。SQL调优是数据库管理中的核心技能,它关乎到系统的响应时间、资源利用率和整体性能。Oracle 19C...
Oracle 19C SQL调优是数据库管理员(DBA)日常工作中不可或缺的一部分,它涉及到优化SQL查询性能,提高数据库系统的整体效率。本指南针对Oracle 19C版本,提供了丰富的调优策略和技术,旨在帮助DBA们更好地管理和维护...
SQLPrompt是一款广受欢迎的SQL代码智能提示和优化工具,由Redgate Software公司开发。SQLPrompt 10.4版本能够与Microsoft SQL Server 2019兼容,这意味着它可以在最新的SQL Server环境中无缝运行,为数据库开发者和...
在网上看了很多资料,感觉不是很仔细,很多同学遇到这个问题,就详细说明一下在局域网环境下Navicat连接SQL Server和Oracle 19c的方法,PL/SQL Developer连接Oracle
SQL Prompt是Redgate Software开发的一款强大的SQL Server数据库开发辅助工具,版本号10.1.7.15015,它可以与SQL Server Management Studio (SSMS) 18.5无缝集成,为SQL Server 2019提供优化的代码编写、格式化和...
SQL Server 2019是Microsoft推出的一款关系型数据库管理系统,是SQL Server系列中的一个重要版本。它提供了强大的数据存储、处理和分析能力,广泛应用于企业级数据库应用开发和数据分析。在本安装包中,主要包含的是...
SQL Prompt是一款强大的SQL代码智能提示和优化工具,它极大地提升了SQL开发人员的工作效率。这款插件专为SQL Server Management Studio (SSMS) 设计,版本10.1.5.14730表明它是该系列的一个特定更新,兼容SQL Server...
19.SQL Server 2014返回记录排序.mp4 2.SQL Server 2014硬件和软件要求.mp4 20.SQL Server 2014关联查询.mp4 21.SQL Server 2014聚合函数AVG() SUM().mp4 22.SQL Server 2014聚合函数MIN() MAX().mp4 23.SQL ...
sql_id => '19v5guvsgcd1v', scope => DBMS_SQLTUNE.scope_comprehensive, time_limit => 60, task_name => '19v5guvsgcd1v_tuning_task', description => 'Tuning task for statement 19v5guvsgcd1v.'); END;...
SQL Prompt 是一款拥有SQL智能提示功能的SQL Server和VS插件。能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索,智能的为用户提供唯一合适的代码选择。亲测可适用于SQL Server 2016,SQL Server 2014...
用于操作LOCALDB ocalDB 安装将复制启动 SQL Server 数据库引擎 所需的最少... 开发人员工具可以向开发人员提供 SQL Server 数据库引擎 ,使其不必管理 Transact-SQL 的完整服务器实例即可撰写和测试 SQL Server代码。
第19章 pl/sql函数 第20章 pl/sql包 第21章 触发器 第22章 使用对象类型 第四部分 pl/sql系统包 第23章 使用大对象 第24章 读写os文件 第25章 开发多媒体应用 第26章 开发web应用 第27章 dbms_sq...
Sql Server语句自动提示插件是一款为数据库开发者和管理员提供便利的工具,它极大地提高了编写SQL语句的效率。在数据库开发过程中,手动输入复杂的SQL命令可能会耗费大量时间,而这款插件则能够通过智能提示功能,...
Sybase SQL anywhere10全部学习资料很大.PDF格式.非常详细. 00.sybase中文安装指南FOR WIN 01.SQL Anywhere 10简介 02SQL Anywhere 10更改和升级... M-Business Anywhere 编程 19UltraLiteC 及 C++ 编程
SQLServer是一款广泛应用于企业级数据管理和分析的数据库管理系统,由微软公司开发并提供。SQLPrompt是Red Gate Software推出的一款强大的SQL Server智能提示插件,它极大地提升了SQL编码的效率和准确性。在SQL...
Oracle 19C SQL调优优化指南,全面提升SQL优化能力,DBA必备,开发必备
"SQL Server 面试笔试试题及答案" 本资源摘要提供了 SQL Server 面试笔试试题及答案,涵盖了数据库...* 本资源提供了 19 道 SQL Server 面试题,涵盖了数据模型、实体关系、SQL 语言、Transact-SQL 等多方面的知识点。