#sql #ms-access
#sql #ms-access
Вопрос:
У меня есть запрос, A
, в моей базе данных ms-access, выполнение которого занимает ~ 2 секунды. A
дает мне шесть полей: Field1
, Field2
, …, Field6
.
Я должен добавить результаты A
в таблицу, T
.
Я создал запрос, B
, который выбирает столбцы A
и вставляет их в таблицу T
. Однако B
для выполнения требуется более 10 минут… Почему? и как мне ускорить B
?
Вот код для B
:
INSERT INTO TrialRuns (Field1,Field2,...,Field6)
SELECT A.Field1,A.Field2,...,Field6
From A
Комментарии:
1. Есть какие-либо ограничения для этой таблицы (ограничение первичного ключа / уникальности, ограничение правила проверки / проверки, правило проверки) или триггер или аналогичный? Недавно уплотняли базу данных? Сколько существующих строк, сколько вставляется?
2. В таблице нет ограничений / триггеров / аналогичных. Я пытался уплотнить базу данных (более одного раза). Существует <20 тыс. существующих записей, и я вставляю 6,6 тыс. новых. Никакие вычисления не выполняются
B
; он просто берет данные, которые были вычислены,A
и добавляет ихT
.3. У меня есть первичный ключ с автоматической нумерацией, все остальные поля не ограничены
4. Может быть, просто вычисления занимают много времени? Сколько времени требуется для вставки в новую таблицу, например
SELECT * INTO X FROM A;
?5. @onedayкогда я вернусь к работе во вторник; в это время попытаюсь вставить в новую таблицу и следить за результатами.
Ответ №1:
Попробуйте что-то вроде этого:
ВСТАВИТЬ В TrialRuns ВЫБЕРИТЕ * ИЗ;
Ответ №2:
Попробуйте;
ВЫБЕРИТЕ A.Field1, A.Field2, …,Field6 В TrialRuns ИЗ
Обратите внимание, что это может сработать, только если вы убедитесь, что таблица TrialRuns изначально не существует, поэтому заранее выполните УДАЛЕНИЕ ТАБЛИЦЫ TrialRun, если она существует. Это должно занять столько же времени, сколько и начальная инструкция SELECT .