我正在运行一些关于索引和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
答案 0 :(得分:3)
可能是任何事情(例如,其他工作占用CPU,磁盘执行其他操作,内存管理)。
当你进入十分之一秒时,经过的时间变化很大。