不走索引大体有以下几个原因:
• 你在Instance级别所用的是all_rows的方式
• 你的表的统计信息(最可能的原因)
• 你的表很小,上文提到过的,Oracle的优化器认为不值得走索引。
解决方法:
可以修改init.ora中的OPTIMIZER_MODE这个参数,把它改为Rule或Choose,重起数据库。也可以使用4中所提的Hint。
不走索引的其它原因:
1、建立组合索引,但查询谓词并未使用组合索引的第一列,此处有一个INDEX SKIP SCAN概念。
2、在包含有null值的table列上建立索引,当时使用select count(*) from table时不会使用索引。
3、在索引列上使用函数时不会使用索引,如果一定要使用索引只能建立函数索引。
4、当被索引的列进行隐式的类型转换时不会使用索引。如:select * from t where indexed_column = 5,而indexed_column列建立索引但类型是字符型,这时Oracle会产生隐式的类型转换,转换后的语句类似于select * from t where to_number(indexed_column) = 5,此时不走索引的情况类似于case3。日期转换也有类似问题,如: select * from t where trunc(date_col) = trunc(sysdate)其中date_col为索引列,这样写不会走索引,可改写成select * from t where date_col >= trunc(sysdate) and date_col < trunc(sysdate+1),此查询会走索引。
5、并不是所有情况使用索引都会加快查询速度,full scan table 有时会更快,尤其是当查询的数据量占整个表的比重较大时,因为full scan table采用的是多块读,当Oracle优化器没有选择使用索引时不要立即强制使用,要充分证明使用索引确实查询更快时再使用强制索引。
6、<>
7、like’%dd’百分号在前。
select status,T.* from user_indexes T
where table_name='T_CHIPIN_TEMP'
分享到:
相关推荐
本文将深入探讨Oracle索引的原理、创建方法,并结合SQL优化策略,帮助你提升数据库查询速度,降低资源消耗。 首先,我们要理解索引的基本概念。在数据库中,索引类似于书籍的目录,它为数据提供快速访问的途径。...
值得注意的是,强制索引的生效与记录的条数密切相关。例如,当数据量在一定范围内时,索引可能被优化器选择使用。但如果数据量过大,优化器可能会选择全表扫描,因为全表扫描在处理大量数据时可能更快。这种情况下,...
本文将深入探讨Oracle DB的优化策略,包括优化器的选择与使用、索引的原理与应用以及并行查询的实践。 一、关于 Oracle 优化器 Oracle的优化器是数据库执行SQL语句时选择最优执行路径的关键组件。优化器主要有两种...
在更改Undo表空间时,需要重启数据库以使设置生效。 8. **复制中断**:非repadmin用户登录OEM可能导致显示复制环境为中断状态,而且作业可能会中断,导致数据无法传播。因此,正确管理和使用复制管理员权限至关重要...
总之,Oracle全文搜索设置是一个涉及多个步骤的过程,包括安装必要的组件、配置网络和数据库设置、创建索引以及测试和优化。确保每一步都正确无误是至关重要的,因为全文搜索是提升数据库在处理大量文本数据时查询...
3. **激活环境变量**:运行`source ~/.bash_profile`或`source ~/.bashrc`使修改生效。 四、创建数据库实例 1. **创建Oracle监听器**:编辑listener.ora文件,配置监听器端口和数据库服务名。 2. **初始化参数文件*...
- 可以通过修改 `init.ora` 文件添加新的控制文件,然后重启数据库以使更改生效。 **获取控制文件信息**: - 可以通过查询数据字典视图,如 `V$CONTROLFILE`, `V$PARAMETER`, `V$CONTROLFILE_RECORD_SECTION` 来...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
在应用这些补丁时,你需要按照Oracle的推荐步骤进行,通常包括先备份数据库,然后停机应用补丁,最后重启数据库以使更改生效。务必仔细阅读补丁的说明文档,因为不同的补丁可能有特定的安装顺序和依赖关系。此外,...
在 Oracle 数据库中,数据段压缩主要用于表、索引和其他数据库对象,以减小它们在磁盘上的占用空间。本文将详细讲解如何在 Oracle 中使用数据段压缩。 首先,我们可以创建一张压缩表,这样后续插入的数据将会自动被...
16. **角色生效**:使用`SET ROLE`语句可以让一个角色生效。 17. **获取所有用户信息**:`DBA_USERS`数据字典视图可以获取数据库中的所有用户信息。 18. **非系统权限**:`SELECT`、`UPDATE ANY TABLE`和`INSERT ...
如果表没有建立适当的索引或者SQL语句未利用这些索引,则仍会退化为使用表级锁。 **Oracle**则通常使用行级锁,其锁定机制更加灵活且独立于索引的存在与否。这意味着Oracle在处理并发请求时能更有效地利用资源,...
- **配置索引选项**:如果也使用Web服务器作为文档内容服务器,则还需要配置索引选项。例如: ``` IndexOptions NameWidth=* IndexOptions FoldersFirst AddIcon /icons/text.gif .txt .log ``` - **检查oracle...
- ROLLBACK用于回滚事务到某个保存点,取消未提交的更改。 - SAVEPOINT允许在事务中设置保存点,可以回退到这些保存点。 #### 七、安全性和权限管理 - **用户管理**: - 创建、修改和删除用户账户。 - 设置密码...
Oracle Spatial是Oracle数据库的一个扩展,提供了对地理空间数据的支持,包括空间索引、空间查询、几何操作等。在传统的配置中,若要使用GeoServer处理Oracle Spatial数据,可能需要编写复杂的自定义代码或利用不...
- **段(Segment)**:是由一组范围构成的逻辑存储区域,用于存储特定类型的数据,例如表数据、索引数据等。 - **区(Extent)**:是由连续的数据块组成的固定大小的存储单元。当某个对象需要更多空间时,会分配更多的区...
### Oracle数据库规范详解 #### 一、概述 Oracle数据库规范是针对Oracle...以上内容详细介绍了如何合理设置存储参数、事务参数、列设计以及索引管理等方面的关键点,有助于开发者和DBA更好地管理和维护Oracle数据库。