知识大全 重建索引(rebuild index)与sort

Posted 索引

篇首语:笔落惊风雨,诗成泣鬼神。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 重建索引(rebuild index)与sort相关的知识,希望对你有一定的参考价值。

  重建索引到底要不要排序?有人说要 因为创建索引时需要排序 有人说不要 因为重建索引的时候可以直接扫描旧的索引来重建成新的索引 让我们来看一下rebuild index到底需不需要排序     SQL> select name statistic# from v$statname where name like %sort% ;    NAME                               STATISTIC#     sorts (memory)                            sorts (disk)                             sorts (rows)                               看一下排序操作相关的 stat号    再看一下rebuild index 的执行路径 SQL> explain plan for alter index ind_test_id rebuild;    Explained     SQL> @?/rdbms/admin/utlxpls    PLAN_TABLE_OUTPUT     | Id | Operation       | Name    | Rows | Bytes | Cost |     |  | ALTER INDEX STATEMENT |       | | |   |  |  | INDEX BUILD NON UNIQUE| IND_TEST_ID |    |    |    |  |  |  SORT CREATE INDEX  |       | | |    |  |  |  INDEX FAST FULL SCAN| IND_TEST_ID | | |   |     执行下rebuild 看看    SQL> select STATISTIC# value from v$mystat where STATISTIC# in( );  STATISTIC#   VALUE                                           SQL> alter index ind_test_id rebuild;    Index altered     SQL> select STATISTIC# value from v$mystat where STATISTIC# in( );  STATISTIC#   VALUE                                       可以看出sort(memory)增加了一次    为什么要排序呢?因为rebuild index的时候走的index ffs 而ffs搜索的顺序是根据 leaf block 的物理存储顺序相关而跟键值的逻辑顺序无关(在 index full scan vs fast index full scan 这篇文章中有详细介绍) 所以ffs的结果必须再做一次排序     此外在rebulid index online的时候走的是full table scan 这时候也是需要排序的 而且排序的次数会比较多 在测试中发现每次做rebuild online产生 ( g中为 )次sort(memory) 可能跟一些递规排序有关系 g里面重建索引排序又有了一些改变 在 事件的跟踪文件里面出现 Reopened sort 目前暂时不知道是什么意思 希望有朋友能就这个问题进行探讨 cha138/Article/program/Oracle/201311/17962

相关参考

知识大全 oracle数据库如何重建索引

  当索引的碎片过多时会影响执行查询的速度从而影响到我们的工作效率这时候采取的最有利的措施莫过于重建索引了本文主要介绍了Oracle数据库中检查索引碎片并重建索引的过程接下来我们就开始介绍这一过程  

知识大全 全局索引的ONLINE重建要注意影响

全局索引的ONLINE重建要注意影响  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前几天遇到一

知识大全 在ORACLE里按用户名重建索引的方法

在ORACLE里按用户名重建索引的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果你管理

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

在Oracle数据库中按用户名重建索引的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如果

知识大全 Index of Oracle

IndexofOracle  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  索引(Index)是常

知识大全 oracle修改索引现有表空间

  //dba_indexes可查询所有索引以及索引部分信息可以灵活运用于其他用途  //假设用户USER现有表空间TSTS需要迁移其下所有表空间TS的索引到TS中可使用以下语句(在plsql中)  

知识大全 C# 类中索引器的使用

C#类中索引器的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  索引器(Indexer)是C

知识大全 v$tempfile与v$sort

  在前面的V$TEMPSEG_USAGE与Oracle排序中我谈到V$TEMPSEG_USAGE和V$SORT_USAGE同源其中的SEGFILE#代表的是绝对文件号(AFN)  那么对于临时表空间

知识大全 数据库管理员日常工作中必备的sql列表[1]

  数据库管理员日常工作中必备的sql列表  监控索引是否使用  alterindex&index_namemonitoringusage;  alterindex&index_nam

知识大全 oracle10g中unique与index的问题

  createtabletest  (  xinteger  yinteger  zinteger  );  altertabletestaddconstraintprimarykey(x);产生一