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

У меня есть таблица в базе данных оракула с 15 полями. В этой таблице было 3500000 вставок. Я удалил их все.

delete
from table

После этого всякий раз, когда я выполняю оператор select Я получаю очень медленный ответ (7 секунд), хотя таблица пуста. Я получаю нормальный ответ только в том случае, если я ищу в соответствии с индексированным полем.

Почему?

Ответ 1

Как говорит Гритем, вам нужно понять знаки высокой воды и т.д.

Если вы не хотите truncate таблицу теперь (поскольку свежие данные были вставлены), используйте alter table xyz shrink space documented здесь для 10g

Ответ 3

В sql, когда вы хотите полностью очистить таблицу, вы должны использовать truncate вместо delete. Скажем, у вас есть таблица с 3,5 миллионами строк в ней, и есть индекс (уникальный идентификатор) в столбце bigint, который увеличивается для каждой строки. Усечение таблицы полностью очистит таблицу и reset от индекса до 0. Удалить не будет очищать индекс и будет продолжаться до 3500,001, когда будет вставлена ​​следующая запись. Усечение также намного быстрее, чем удаление. Прочтите приведенные ниже статьи, чтобы понять различия.

Прочтите эту статью Прочитайте эту статью, в которой объясняется разница между truncate и delete. Есть время, чтобы использовать каждый. Здесь - еще одна статья с точки зрения Oracle.