Оптимизация запросов Microsoft AccessИсточник: DBF ovsergey
Каждый хочет, чтобы его база данных работала наиболее оптимально. И частенько возникают такие ситуации, когда требуется ускорить работу какого-нибудь запроса или другого объекта базы данных. Выполнение запросов обычно зависит от таблиц или вложенных запросов, на основе которых они основаны, и от сложности самих запросов. Формы, основанные на таблицах, работают быстрее, чем формы, основанные на запросах, и присоединенные таблицы медленнее внутренних таблиц. Иногда может быть предпочтительнее вместо присоединения импортировать часто используемые внешние таблицы.
Ниже приведены несколько методов, которые используют продвинутые ИТ спецы для оптимизации скорости выполнения запросов в Access:
1. Отображайте минимальное количество полей в запросах. Для полей, которые используются в качестве критериев и не требуется вывод на экран, устанавливайте признак "not shown". 2. Индексируйте все поля, участвующие в ограничениях, выражениях, все сортируемые поля и поля, по которым устанавливаются связи с другими таблицами. 3. Используйте первичные ключи или уникальные индексы везде, где возможно. 4. Числовой предпочтительнее, чем текстовый первичный ключ. 5. Используйте не пустые уникальные поля. 6. Избегайте использования функции IIf() в запросах. 7. Избегайте группирующих функций, таких как Dlookup(). 8. Охотнее используйте Between и Equal, это быстрее чем > или <. 9. Используйте фиксированные заголовки столбцов для перекрёстных запросов. 10. Для отчётов, основанных на запросах, используйте вид Portrait в Landscape и выбирайте "Да" для Fast Laser Printing (View,Options,Other Properties). 11. Используйте запросы, создающие таблицы для запуска отчётов на статичных данных. При этом вызываются snapshot отчёты. 12. Предпочтительнее Count (*) вместо Count(Column). 13. Когда создаётся ограничение на связанном столбце с типом один-ко-многим, протестируйте выполнее запроса, когда размещаете ограничение на стороне "один" или на стороне "много". Сторона "один" не всегда быстрее работает - сторона "много" может иметь немного меньше записей. 14. Короткие имена талбиц и полей работают быстрее, чем длинные имена. 15. Нормализация таблиц - связи работают быстрее на более маленьких таблицах. 16. Денормализация таблиц - понижается количество связей. На основе экспериментов выберете баланс между нормализацией и денормализацией. 17. Избегайте использования Distinct в запросах - Union запросы не нуждаются в опции distinct так как автоматически возвращают уникальные поля в процессе Объединения. |