2016-10-05 3 views
0

У меня есть запрос, A, в моей базе данных ms-доступа, для выполнения которой требуется ~ 2 секунды. A дает мне шесть полей: Field1, Field2, ..., Field6.Slow Access Append Query

Я должен добавить результаты A в таблицу, T.

Я создал запрос, B, который выбирает столбцы от A и вставляет их в таблицу T. Однако, B занимает больше 10 минут, чтобы бежать ... Почему? и Как ускорить B?

Вот код для B:

INSERT INTO TrialRuns (Field1,Field2,...,Field6) 
SELECT A.Field1,A.Field2,...,Field6 
From A 
+0

Есть ли какие-либо ограничения на эту таблицу (первичный ключ/уникальное ограничение, правило проверки/проверка, правило проверки) или триггер или аналогичный? Недавно удалили базу данных? Сколько существующих строк, сколько их вставили? – onedaywhen

+0

Нет ограничений/триггеров/подобных на столе. Я попытался уплотнить базу данных (не один раз). Есть <20k существующих записей, и я вставляю 6.6k новых. Никакие вычисления не выполняются 'B'; он просто берет данные, которые были вычислены 'A' и добавляет его к' T'. –

+0

У меня есть первичный ключ AutoNumber, любое другое поле не ограничено –

ответ

0

Попробуйте что-то вроде этого:

INSERT INTO TrialRuns SELECT * FROM A;

+0

Этот подход не повлиял на производительность. –

0

Попыться;

ВЫБРАТЬ A.Field1, A.Field2, ..., Field6 INTO TrialRuns ОТ А

Обратите внимание, что это может работать только тогда, когда вы убедитесь, что таблица TrialRuns не существует, чтобы начать с, так что запустите DROP TABLE TrialRun заранее, если он существует. Это займет столько времени, сколько будет выполняться как начальная инструкция SELECT.