在什么样的条件下需要重建索引

问:在什么样的条件下需要重建索引?

答:重建索引需要如下两个条件。

一:分析(analyze)指定索引之后,查询index_stats的height字段的值,如果这个值>=4 ,最好重建(rebuild)这个索引。虽然这个规则不是总是正确,但如果这个值一直都是不变的,则这个索引也就不需重建。

二:在分析(analyze)指定索引之后,查询index_stats的del_lf_rows和lf_rows的值,如果(del_lf_rows/lf_rows)*100 > = 20,则这个索引也需要重建。

举例如下:

SQL > analyze index IND_PK validate structure;
SQL > select name,height,del_lf_rows,lf_rows,
(del_lf_rows/lf_rows) *100 from index_stats;
NAME    HEIGHT DEL_LF_ROWS  LF_ROWS (DEL_LF_ROWS/LF_ROWS)*100
------------------------------
INDX_PK  4   277353   990206   28.0096263
SQL> alter index IND_PK rebuild;

时间: 2024-11-03 08:38:44

在什么样的条件下需要重建索引的相关文章

mysql 左连接时在不考虑where条件下主表可以使用索引吗

问题描述 mysql 左连接时在不考虑where条件下主表可以使用索引吗 这是我explain下的分析结果,就差主表没有使用索引了: 主表有30万数据,副表数据上千.全部使用左连接关联5个表查询时5秒以上.希望大神给指个路,思路就行 >

Oracle 重建索引的必要性

      索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DBA也是遵循这一准则来重建索引,那就是Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引.近来Oracle也提出了一些与之相反的观点,就是强烈建议不要定期重建索引.本文是参考了1525787.1并进行相应描述.   1.重建索引的理由    a.Oracle的B树索引随着时间的推移变得不平衡(误解)    b.索引碎片在不断增加  

Oracle关于重建索引争论的总结_oracle

索引重建是一个争论不休被不断热烈讨论的议题.当然Oracle官方也有自己的观点,我们很多DBA也是遵循这一准则来重建索引,那就是Oracle建议对于索引深度超过4级以及已删除的索引条目至少占有现有索引条目总数的20% 这2种情形下需要重建索引.近来Oracle也提出了一些与之相反的观点,就是强烈建议不要定期重建索引.本文是参考了1525787.1并进行相应描述. 1.重建索引的理由     a.Oracle的B树索引随着时间的推移变得不平衡(误解)     b.索引碎片在不断增加     c.索

oracle数据库如何重建索引

  当索引的碎片过多时,会影响执行查询的速度,从而影响到我们的工作效率.这时候采取的最有利的措施莫过于重建索引了.本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程,接下来我们就开始介绍这一过程. 重建索引的步骤如下: 1. 确认基本信息 登入数据库,找到专门存放index 的tablespace,并且这个tablespace下所有index的owner都是tax.将index专门存放在一个独立的tablespace, 与数据表的tablespace分离,是常用的数据库设计方法. 2

SQL Server 2000数据库中如何重建索引

在数据库中创建索引时,查询所使用的索引信息存储在索引页中.连续索引页由从一个页到下一个页的指针链接在一起.当对数据的更改影响到索引时,索引中的信息可能会在数据库中分散开来.重建索引可以重新组织索引数据(对于聚集索引还包括表数据)的存储,清除碎片.这可通过减少获得请求数据所需的页读取数来提高磁盘性能. 在 Microsoft SQL Server 2000 中,如果要用一个步骤重新创建索引,而不想删除旧索引并重新创建同一索引,则使用 CREATE INDEX 语句的 DROP_EXISTING 子

关于定期重建索引

是否需要定期重建索引,是dba们一直争论的话题,从未停止过. 总结下各方意见 ---5.1 支持重建索引的理由 1)oracle的B树索引随着时间的推移变得很不平衡 很多dba认为如果对oracle的B树索引进行大量的DMl操作,尤其是delete或update,索引会变得不平衡: 其实这个不是最终的事实,因为根块和所有的叶块之间的高度始终是一致的. 2)索引中被删除的空间无法重用:下面案例可以说明这个观点不正确的 create table t1 ( sid int not null , sna

在Oracle数据库中按用户名重建索引的方法

如果你管理的Oracle数据库下某些应用项目有大量的修改删除操作, 数据索引是需要周期性的重建的. 它不仅可以提高查询性能, 还能增加索引表空间空闲空间大小. 在ORACLE里大量删除记录后, 表和索引里占用的数据块空间并没有释放. 重建索引可以释放已删除记录索引占用的数据块空间. 转移数据, 重命名的方法可以重新组织表里的数据. 下面是可以按ORACLE用户名生成重建索引的SQL脚本: SET ECHO OFF; SET FEEDBACK OFF; SET VERIFY OFF; SET PA

Oracle管理索引(六)Oracle重建索引

(1)检查需要重建的索引 根据以下几方面进行检查,确定需要重建的索引. 第一,查看SYSTEM表空间中的用户索引 为了避免数据字典的碎片出现,要尽量避免在SYSTEM表空间出现用户的表和索引. select index_name from dba_indexes where tablespace_name="SYSTEM" and owner not in ("SYS","SYSTEM") 第二,确保用户的表和索引不在同一表空间内 表和索引对象的

Oracle 重建索引脚本

      索引是提高数据库查询性能的有力武器.没有索引,就好比图书馆没有图书标签一样,找一本书自己想要的书比登天还难.然而索引在使用的过程中,尤其是在批量的DML的情形下会产生相应的碎片,以及B树高度会发生相应变化,因此可以对这些变化较大的索引进行重构以提高性能.N久以前Oracle建议我们定期重建那些高度为4,已删除的索引条目至少占有现有索引条目总数的20%的这些表上的索引.但Oracle现在强烈建议不要定期重建索引.具体可以参考文章:Oracle 重建索引的必要性.尽管如此重建索引还是有必