当您不使用索引时索引表DML性能

时间:2010-08-07 09:50:31

标签: performance oracle indexing

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

那么为什么Indexed表在不使用索引时执行速度较慢?谢谢大家...

$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

1 个答案:

答案 0 :(得分:3)

可能是任何事情(例如,其他工作占用CPU,磁盘执行其他操作,内存管理)。

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