Oracle数据库中有一个表,用PL/SQL查看该表的索引没有被DROP掉, 但是表上的数据查询起来很慢(查询时间大概是原来的3倍),后

Oracle数据库中有一个表,用PL/SQL查看该表的索引没有被DROP掉,, 但是表上的数据查询起来很慢(查询时间大概是原来的3倍),后来重建了一下索引就好了, 请问这是为什么, 在什么情况下会出现类似的索引丢失的情况?

可能是你的表经常被更新,碎片太多,索引占用空间太大,优化器觉得没有必要用索引了就直接全表扫描了啊,你重新建立索引,就整理了碎片了啊,当然就又用索引了.

索引失效的情况很多,比如左边使用了函数 ,表没有分析 ,导致索引扫描的cost高于全表扫描,表很小 ,等等。需要具体分析。你可以根据执行计划来判断.

以下情况会导致索引失效:

1) 直接导入:

imp with SKIP_UNUSABLE_INDEXES=Y

or sqlldr with SKIP_INDEX_MAINTENANCE

2) 在索引维护过程中出现ORA-1652/1653错误:

sqlldr DIRECT=Y failes with ORA-1652 or 1653

3) 分区维护导致ROWID发生改变:

ALTER TABLE MOVE PARTITION

ALTER TABLE TRUNCATE PARTITION

ALTER TABLE SPLIT PARTITION

索引失效问题解决方法:

1)导致的原因:

在SQL*LOADER 加载过程中会维护索引,由于数据量比较大,在SQL*LOADER 加载过程中出现异常情况,导致ORACLE 来不及维护索引,导致索引处于失效状态,影响查询和加载。

异常情况主要有:在加载过程中杀掉SQL*LOADER 进程,重启,表空间不够等。

2)解决方法:

重建索引

3)如何重建索引

a) 查看索引类型

select t1.index_name,t1.partitioned from Dba_Indexes t1

where t1.Table_Name=upper('CCB_COGNOS_PROD_BALANCE_AA')

索引名称 是否分区索引

GNOS_PROD_BALANCE_AA_N1 NO

b)非分区索引

重建索引:alter index cin.CCB_COGNOS_PROD_BALANCE_AA_N1 rebuild Nologging

c)分区索引

找出失效的分区索引:

select t.Index_Name, t.Partition_Name, t.Tablespace_Name, t.Status

from Dba_Ind_Partitions t

where t.Index_Name = 'CMZ_LOCAL_IDX_2'

重建所有状态为unusable的索引

ALTER INDEX 索引名

REBUILD PARTITION 分区名

TABLESPACE 表空间名

NOLOGGING

ORACLE索引失效解决方案

最近碰到这样一个问题:在PROD_PARTS表中新添加了一个索引:

create index IDX_PT_DV_ID on PROD_PARTS (DEVICE_ID);

但是在使用DEVICE_ID字段进行查询时,发现该索引并没有被利用到:

SELECT * FROM PROD_PARTS WHERE device_id =122511619;

执行计划:

TABLE ACCESS FULL

之后请教DBA后,发现是数据统计的问题,具体的解决办法是执行下面的语句:

analyze table PROD_PARTS compute statistics;

ANALYZE TABLE PROD_PARTS COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;

analyze table PROD_PARTS compute statistics for table for all indexes for all indexed columns;

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

oracle怎么找出失效索引,Oracle数据库索引失效相关推荐

  1. mysql 左连接 怎么走索引_数据库索引、左连接、右连接、等值连接

    在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引(MyISAM 表)和R-Tree索引,本文讲的是B-Tree索引. 一.Mysql索引主要有两种结构 ...

  2. 数据库mysql的索引_数据库索引

    数据库索引 编辑 锁定 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信 ...

  3. oracle树子类遍历父类_不懂数据库索引的底层原理?那是因为你心里没点b树

    前几天下班回到家后正在处理一个白天没解决的bug,厕所突然传来对象的声音: 对象:xx,你有<时间简史>吗? 我:我去!妹子,你这啥癖好啊,我有时间也不会去捡屎啊! 对象:...人家说的是 ...

  4. access建立两个字段唯一索引_数据库索引原理及优化

    微信公众号:云计算通俗讲义 持续输出技术干货,欢迎关注! 通过本文你将了解: 概述 分类 索引底层实现原理 基本操作 索引失效 索引优化 01 概述 索引是帮助MySQL高效获取数据的排好序的数据结构 ...

  5. 位图索引,数据库索引浅浅的学习

    摘自http://www.cnblogs.com/LBSer/p/3322630.html 位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧, ...

  6. mysql实现位图索引_位图索引,数据库索引浅浅的学习

    位图(BitMap)索引 前段时间听同事分享,偶尔讲起Oracle数据库的位图索引,顿时大感兴趣.说来惭愧,在这之前对位图索引一无所知,因此趁此机会写篇博文介绍下位图索引. 1. 案例 有张表名为ta ...

  7. mysql的数据库的索引_MySQL 数据库索引原理与分类

    前言 数据库索引本质上是一种数据结构(存储结构+算法),目的是为了加快目标数据检索的速度. 目录 1.索引的本质与原理? 2.索引的分类? 1.索引的本质与原理 我们先看一个问题: 假设现在有1000 ...

  8. mysql索引 聚集索引_MySql数据库索引-聚集索引和辅助索引

    InnoDB存储引擎索引: B+树索引:不能找到一个给定键值的具体行,能找到的只是被查找数据行所在的页.然后把页加载到内存,在查询所要的数据. 全文索引: 哈希索引:InnoDB会根据表的使用情况自动 ...

  9. 在ORACLE中找出并批量编译失效的对象

    每次数据库升级之后,都需要对库中的对象进行重新编译一下.下面整理出了一个脚本,只需要执行一下就能批量编译这些失效的对象.需要注意的是:因权限问题,最好是选择sys用户来执行这个脚本,如是plsql d ...

最新文章

  1. java基础--日期--练习集锦
  2. 如何创建vss2005的数据库
  3. python教程书籍推荐-推荐几本对于Python初学者比较好的书籍(内含PDF)
  4. iOS 13 真机调试包
  5. mysql中约束_【MySQL】:MySQL中四大约束
  6. SSH初体验系列--Hibernate--1--环境配置及demo
  7. 牛客题霸 [ 环形链表的约瑟夫问题] C++题解/答案
  8. 10年老电脑如何提速_电脑越用越卡?如何简单升级,让你的旧笔记本瞬间提速...
  9. 图片盒子控件 winform 114868210
  10. java日期互转:LocalDateTime、String、Instant、Date
  11. CSDN帐号管理规范
  12. android app安装apk,Android App更新安装APK
  13. 如何理解虚拟DOM?
  14. 一元三次方程的解法史
  15. J2SDK1.5-J2SDK5.0,哈哈
  16. java 如何清除临时文件_如何删除Java中的临时文件?
  17. jax-rs jax-ws_了解WS-Policy
  18. npoi 设定视图为分页预览_NPOI导出EXCEL 打印设置分页及打印标题
  19. net start mysql发生系统错误2 解决方法
  20. Mr.Xiong使用jQuery实现一到一百随机数和事件的委派的效果

热门文章

  1. IOS 手绘地图导航
  2. 乌班图安装ORB-SLAM2并使用USB摄像头运行
  3. 手游测试工具ThreadingTest--对高仿版植物大战僵尸进行测试
  4. Python之动态规划算法
  5. 2023跨年烟花(浪漫烟花+自定义音乐+雪花飘飘+自定义文字)
  6. 服务器文件系统格式,2. Linux 文件系统
  7. 软件工程之模块独立性
  8. 加强身份鉴别,宁盾双因素认证提升步长制药远程办公账号安全
  9. 数字孪生助力打造数字化智慧校园方案
  10. 第27回 测试结果分析和质量报告