КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Rs.CloseSet db=Nothing Использование SQL вместо DAO Работать с наборами записей рекомендуется только втом случае, если нет другой альтернативы. Механизм баз данных Jet для манипуляций над данными и структурами данных оптимизирован на использование SQL. При каждой возможности вместо DAO следует использовать запросы SQL. Очень редко DAO работает быстрее, чем правильно составленный запрос. В отличие от DAO, запросы имеют план выполнения и используют преимущества индексации. Если необходимо адресовать данные через объектную модель, рекомендуется вместо DAO использовать ADO. ADO — новый стандарт для манипуляций с адресацией данных и определением данных через объектную модель. Разработка дальнейших версий DAO прекращена, и никаких улучшений или расширений в будущем не последует. Использование номеров индексов коллекций При работе с коллекциями рекомендуется по возможности пользоваться их индексами. Номера индекса представляют собой внутреннюю идентификацию коллекции. Их использование приводит к гораздо более быстрому выполнению по сравнению с использованием любого другого свойства (например, имени) объекта коллекции. Приведенный ниже пример иллюстрирует два разных способа обращения к текущей базе данных. Ссылка на Currentdb() автоматически обновляет коллекции базы данных, что занимает определенное время. Первая ссылка (dbEngine(0)(0)) не обновляет коллекцию. Set db=DBEngine(0)(0) работает быстрее, чем Set db=Currentdb() Выражение Set cntl=Forms!frmMyForm(O) работает быстрее, чем Set cntl=Forms![frmMyForm]![myControl] Использование номера индекса элементаколлекции особенно полезно в циклах. Создание быстрых циклов При работе с циклами по коллекции рекомендуется использоватьFor...Each вместо For...Next. При работе с циклами по элементам управления на форме код For Each cnti on fcm Next выполняется быстрее, чем простой циклFor...Each. Если необходимо создать цикл по коллекции объектов, следует избегать ненужного обновления коллекции. Даже в маленькой базе данных обновление коллекции может значительно снизить быстродействие приложения. При использовании циклаFor—Next можно сэкономить время, не повторяя переменную в строке Next. For i=l to 100 .... .необходимый код Next Преимущества такого подхода особенно заметны при использовании вложенных циклов. Кроме того, не следует пересчитывать предельное значение для строкиFor. Верхнее предельное значение должно быть установлено перед входом в цикл. reccount=rs.recordcount/2 For i=l to reccount Next Если не установить заранее значение верхнего предела, цикл пересчитывает значение при каждом проходе, а это — потеря времени. Исключение IIF() из кода Не рекомендуется использовать в коде функцию IIF(). Данная функция перед выдачей результата должна оценить вес выражения, содержащиеся в ней. Стандартная конструкцияIf...Then...Else работает быстрее. Построение конструкции Select Case При использовании конструкции SelectCase наиболее часто встречающиеся случаи следует разместить в верхней части структуры. Поскольку проверяется каждый случай по порядку, такая компоновка позволяет обеспечить максимально быстрый выход из структуры. Использование .Execute вместо RunSQL По возможности следует избегать кодирования в стилеDoCmd. DoCmd представляет собой высший уровень кода VBA, — потомок макросов. В тех случаях, когда имеется альтернатива, ею следует обязательно воспользоваться. Выражение
|