【问题标题】:Indexed Table DML Performance when you dont use index不使用索引时的索引表 DML 性能
【发布时间】:2011-03-26 16:34:56
【问题描述】:

我正在运行一些关于索引和 DML 的性能测试。当您不在索引表上使用索引时,我无法理解某些测试结果,DML 的执行速度比非索引表慢。我期望以相似的时间间隔运行两者。 我使用的plsql块如下:(TINDEX_PERFORMANCE_TEST_1表有一个主键列'ID',我没有在更新语句中使用它,以便在我使用下面的语句更新时不需要更新索引。对吗?)

那么为什么索引表在不使用索引的情况下会执行得更慢呢?谢谢大家...

$BEGIN

    RUNSTATS_PKG.RS_START;

    FOR i IN 1..10000 
    LOOP

        --INSERT INTO TINDEX_PERFORMANCE_TEST_1 VALUES(i,i);

        UPDATE TINDEX_PERFORMANCE_TEST_1 
        SET vtext = TO_CHAR(i)
        WHERE vtext = TO_CHAR(i);

        --DELETE FROM TINDEX_PERFORMANCE_TEST_1 WHERE ID = i;

    END LOOP;

    RUNSTATS_PKG.RS_MIDDLE;

    FOR i IN 1..10000 
    LOOP

        -- INTO TINDEX_PERFORMANCE_TEST_2 VALUES(i,i);

        UPDATE TINDEX_PERFORMANCE_TEST_2 
        SET vtext = TO_CHAR(i)
        WHERE vtext = TO_CHAR(i);

        --DELETE FROM TINDEX_PERFORMANCE_TEST_2 WHERE ID = i;

    END LOOP;

    RUNSTATS_PKG.RS_STOP;
END;

结果:

Run1 ran in 165 hsecs
Run2 ran in 93 hsecs
run 1 ran in 177,42% of the time

【问题讨论】:

  • 主要是出于好奇,您是否尝试过颠倒表运行相同的代码(即先没有索引的表)?

标签: performance oracle indexing


【解决方案1】:

可能是任何东西(例如,占用 CPU 的其他作业、执行其他操作的磁盘、内存管理)。

当您进入十分之一秒时,经过的时间变化很大。

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多