Access 2007 Первый cn.Execute Заявление очень медленно - PullRequest
0 голосов
/ 20 июня 2011

В настоящее время я работаю над приложением в Access 2007 с разделением FE и BE.FE локально с сетевым ресурсом.Чтобы устранить некоторые проблемы, возникающие при использовании связанных таблиц по сети, я пытаюсь через VBA с использованием ADO загрузить две временные таблицы с данными из двух связанных при первой загрузке приложения с помощью cn.Execute "INSERT INTO TempTable1 SELECT *FROM LinkedTable1 "и cn.Execute" INSERT INTO TempTable2 SELECT * FROM LinkedTable2.50-85seconds.Однако второй оператор execute занимает не более 9 секунд.Эти времена соответствуют.В попытке выяснить, были ли проблемы с одной из таблиц, а не с другой, я изменил порядок операторов в моем коде, и время все равно остается прежним (первое выполнение слишком длинное, а второе выполнение оченьбыстро).(Как примечание, я также попробовал DAO, используя команду CurrentDB.Execute без каких-либо других результатов.) Это имело бы смысл для меня, если бы первый оператор обрабатывал больше записей, чем второй, но хотя и небольшое, вторая таблицаимеет больше записей, чем первый!

У кого-нибудь есть ЛЮБЫЕ предложения о том, почему это происходит и / или как ускорить выполнение первого оператора execute?

Заранее спасибо!WW

Ответы [ 2 ]

0 голосов
/ 20 июня 2011

Я предполагаю, что есть два источника разницы:

  1. первоначальное создание удаленного файла LDB при выполнении первого оператора INSERT. Это проявляется в качестве издержек в первой команде SQL, когда это фактически что-то, что сохраняется через обе.

  2. кеширование: вероятно, файл достаточно мал, чтобы Jet / ACE перетаскивал большие куски по проводам (заголовок и метаданные, а также запрошенные страницы данных) во время первой операции, так что данных стало гораздо меньше. при выполнении второй команды отсутствует в локальной памяти.

Мой вопрос: почему у вас проблемы с производительностью связанных таблиц? Решите это, и тогда вам не придется разбираться с временными таблицами. См. Часто задаваемые вопросы о производительности Тони Тоевса .

0 голосов
/ 20 июня 2011

Какие индексы вы определили для двух временных таблиц, а также для определения первичного ключа?Обновление индексов при добавлении данных может быть одной из причин того, что одна таблица медленнее.

...