Access 2007 Производительность связанных таблиц - PullRequest
3 голосов
/ 08 сентября 2010

У меня есть приложение Access 2007 (ранее в Access 2003), которое сталкивается с некоторыми проблемами с производительностью, когда связанные таблицы базы данных находятся на сетевом диске.В 2003 году приложение работало отлично.Теперь, в 2007 году, скорость извлечения данных с использованием sql и набора записей значительно снизилась.Точная область, в которой я столкнулся с проблемой:

DIM rs AS NEW ADODB.RECORDSET
rs.Open tsSql, CurrentProject.AccessConnection, iKeyset, iLock

iKeyset установлен в 0, а iLock установлен в 3

, команда rs.Open принимает от 4 до 5секунд, что является проблемой из-за того, что на некоторых из моих форм это может происходить несколько раз при загрузке.

какие-либо мысли?

РЕДАКТИРОВАТЬ: не говоря уже о том, что я считаю, что открытие и сохранениеВ этих условиях формы в режиме конструктора выглядят медленнее, чем обычно.

Ответы [ 2 ]

1 голос
/ 05 октября 2010

В зависимости от используемого оператора SQL (т. Е. Вашей переменной 'tsSQL' выше) ваш набор записей должен открываться мгновенно, ADO или DAO.

Идеи, которые приходят мне в голову: постоянна ли ваша связь? Похоже, что это вызывает большую задержку в 2007 году, чем в 2003 году. Возможно, каждый раз сбрасывается и восстанавливается соединение. С формами это происходит, когда ваш источник записей пуст и задан в коде, поэтому рекомендуется всегда иметь источник данных, такой как «tblBlankTable» (небольшая таблица с одной записью, чтобы постоянно поддерживать соединение в форме, которая всегда открыть). Задержка от 4 до 5 секунд - это то, что вы получаете, когда ее нет на месте. Убедитесь, что у вас есть форма, подключенная к вашей БД все время при запуске rs.open, и посмотрите, работает ли она. Возможно, вам может потребоваться форма с открытым соединением ADO в вашем случае. Об этом на форумах Access написано много.

Быстрее ли вы, когда вы являетесь единственным пользователем, по сравнению с тем, когда у других есть БД с открытым файлом блокировки? Это контрольный знак.

Другая идея заключается в том, правильно ли вы проиндексировали все при обновлении. Базовая база данных осталась прежней или увеличилась с MDB до ACCDB? Вы не указали, что находится в tSQL, поэтому, возможно, вы присоединяетесь к неиндексированным полям или к чему-то, что заставляет этот конкретный tSQL работать медленно и просто нужно добавить первичный ключ.

Если ваш tsSQL включает в себя запросы, я читал, что при обновлении важно перекомпилировать все ваши запросы - перейти в режим разработки с каждым, затем запустить их, а затем сохранить их снова.

Вы можете попробовать подключиться к БД с помощью собственной строки подключения - существует один формат для MDB / Jet и другой для ACCDB / Ace. Существуют поставщики для обоих, которые обычно используются из Excel в MDB или ACCDB, но, возможно, могут работать в Access, по крайней мере, для устранения вашей проблемы.

1 голос
/ 10 сентября 2010

Существует исправление Описание пакета исправлений Access 2007 (Access.msp): 26 августа 2008 г. , в котором упоминаются проблемы с производительностью, однако это, скорее всего, включено в Access 2007 SP2. Нажмите кнопку Office >> Параметры доступа (нижний правый угол) >> вкладка Ресурсы и посмотрите, что показывает раздел под названием Microsoft Office Access 2007. Шахтные штаты 12.0.6535.5005).

...