• 空间索引不能用analyze进行分析


        一天,同事问,为何执行了索引分析后(ANALYZE INDEX index_name COMPUTE STATISTICS;),查看user_indexes视图中的last_analyze字段时间没有变化。自己试了下,发现普通索引是可以的,但是对于空间索引就不行。

        因此空间索引的分析不能采用analyze的方式,必须采用dbms_stats包的过程进行分析才有效果。
    user_indexes该视图中的last_analyzed来源于sys.ind$中的analyzetime。
    空间索引的分析:采用的空间索引为INDEX_I_EXCH_S_SPATIAL

    1)查询索引最近一次分析的时间
    select a.index_name,a.last_analyzed from user_indexes a where index_name='INDEX_I_EXCH_S_SPATIAL';
    INDEX_NAME                     LAST_ANALYZED
    ------------------------------ -----------------
    INDEX_I_EXCH_S_SPATIAL         2011-8-11 13:10:11

    2)执行ANALYZE分析
    ANALYZE INDEX index_i_exch_s_spatial COMPUTE STATISTICS;

     3)再次查询最近一次分析时间

    select a.index_name,a.last_analyzed from user_indexes a where index_name='INDEX_I_EXCH_S_SPATIAL';
    INDEX_NAME                     LAST_ANALYZED
    ------------------------------ -----------------
    INDEX_I_EXCH_S_SPATIAL         2011-8-11 13:10:11

    其索引分析时间没有改变,说明 ANALYZE INDEX 语句对空间索引不起作用。

    4)执行如下分析后,分析时间发生改变:
    BEGIN dbms_stats.gather_index_stats('ltwebgis','INDEX_I_EXCH_S_SPATIAL'); END;
    select a.index_name,a.last_analyzed from user_indexes a where index_name='INDEX_I_EXCH_S_SPATIAL';
    INDEX_NAME                     LAST_ANALYZED
    ------------------------------ -----------------
    INDEX_I_EXCH_S_SPATIAL         2011-8-11 13:15:33

    一般索引的分析:采用的索引为IDX_I_EXCH_S_FID
    1)查询索引最近一次分析的时间
    select a.index_name,a.last_analyzed from user_indexes a where index_name='IDX_I_EXCH_S_FID';
    INDEX_NAME                     LAST_ANALYZED
    ------------------------------ -----------------
    INDEX_I_EXCH_S_SPATIAL         2011-8-11 13:08:55

    2)执行ANALYZE分析
    ANALYZE INDEX idx_i_exch_s_fid COMPUTE STATISTICS;

     3)再查询最近分析时间

    select a.index_name,a.last_analyzed from user_indexes a where index_name='IDX_I_EXCH_S_FID';
    INDEX_NAME                     LAST_ANALYZED
    ------------------------------ -----------------
    INDEX_I_EXCH_S_SPATIAL         2011-8-11 13:19:14

    其索引分析时间发生变化。

    4)执行如下分析后,分析时间也发生改变
    BEGIN dbms_stats.gather_index_stats('ltwebgis','IDX_I_EXCH_S_FID'); END;
    select a.index_name,a.last_analyzed from user_indexes a where index_name='IDX_I_EXCH_S_FID';
    INDEX_NAME                     LAST_ANALYZED
    ------------------------------ -----------------
    INDEX_I_EXCH_S_SPATIAL         2011-8-11 13:19:53


    查询最近一次重建的时间
    select object_name,last_ddl_time from user_objects where object_type='INDEX' AND object_name='INDEX_I_EXCH_S_SPATIAL';
    OBJECT_NAME                LAST_DDL_TIME
    -----------------------   ----------------
    INDEX_I_EXCH_S_SPATIAL     2011-8-1 16:26:11

    对该索引重建后,last_ddl_time时间发生变化
    ALTER INDEX INDEX_I_EXCH_S_SPATIAL REBUILD;
    select object_name,last_ddl_time from user_objects where object_type='INDEX' AND object_name='INDEX_I_EXCH_S_SPATIAL';
    OBJECT_NAME                LAST_DDL_TIME
    -----------------------   ----------------
    INDEX_I_EXCH_S_SPATIAL     2011-8-11 10:50:45


  • 相关阅读:
    Ajax中onreadystatechange函数不执行,是因为放在open()后
    js调用ajax案例2,使用ok
    js调用ajax案例
    通过设置ie的通过跨域访问数据源,来访问本地服务
    Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较以及问题
    Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较
    windows 系统纯净版官网下载地址
    iOS:给Git仓库上传代码时,超过100M会被拒绝(例如github和oschina)
    iOS:Xcode8以下真机测试iOS10.0和iOS10.1配置包
    iOS:高德地图的使用
  • 原文地址:https://www.cnblogs.com/lanzi/p/2136727.html
Copyright © 2020-2023  润新知