Производительность индексированной таблицы DML, когда вы не используете индекс - PullRequest
1 голос
/ 07 августа 2010

Я провожу некоторые тесты производительности для индексов и 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

1 Ответ

3 голосов
/ 08 августа 2010

Могло быть что угодно (например, другие задания, загружающие процессор, диск, выполняющий другие операции, управление памятью).

Истекшее время довольно переменно, когда вы переходите в десятые доли секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...