Access 2002

Набор записей посредством ADO


Если вы создаете набор записей посредством ADO, задавая его в виде SQL-строки в программном коде, по возможности выбирайте динамический курсор, то есть задавайте для параметра CursorType значение adOpenDynamic. Несмотря на то что Jet не поддерживает динамических курсоров (хотя, казалось

бы, имя константы указывает на обратное), оно отреагирует на этот параметр оптимизацией запроса. Это кажется странным: зачем использовать константу для неподдерживаемого типа курсора. Но, тем не менее, Jet обрабатывает эту константу, повышая скорость выполнения запроса.

Когда вы создаете объект Recordset с помощью ADO и Jet, не задавайте для свойства CursorLocation этого набора записей значение adUseClient. (По умолчанию его значением является adUseServer.) Может показаться, что, поскольку ядро базы данных Jet не имеет серверной архитектуры, для него должна использоваться опция adUseClient. На самом деле это не так. Опция adUseClient в данном случае будет означать, что вы просите ADO создать собственный курсор в дополнение к тому, который всегда создается Jet. Но в конечном итоге это приведет к существенному замедлению приложения. Так что не попадайте в эту ловушку и не используйте опцию adUseCl i ent, если только у вас нет для этого веской причины. (Например, операции, выполняемые в памяти, требуют клиентского курсора; необходим он и тогда, когда вы вообще отключились от источника данных.)

При существенном изменении размера таблицы и при изменении набора и структуры ее индексов не забывайте вручную перекомпилировать сохраненные запросы, в которых она используется (см. раздел «Как заставить Jet повторно откомпилировать и оптимизировать запрос»).

Для обновления или удаления групп записей вместо циклов по наборам записей по возможности используйте запросы.

Комментарии закрыты