Сведения о производительности запросов в базе данных Microsoft Access

Переводы статьи Переводы статьи
Код статьи: 209126 - Vizualiza?i produsele pentru care se aplic? acest articol.
Средний: Требует обычной макрос, кодирования и взаимодействия навыки.

В данной статье применима только к базе данных Microsoft Access (.mdb).

Для доступа увидеть 97 версии данной статьи 112112.
Развернуть все | Свернуть все

В этой статье

ВВЕДЕНИЕ

В данной статье рассматривается оптимизация производительности запросов в Microsoft Access 2000, в программе Microsoft Access 2002 и Microsoft Office Access 2003. Следующие разделы включены:
  • Оптимизатор запросов для баз данных Microsoft Jet обработчик
  • Время запроса
  • Анализ производительности
  • Советы для повышения производительности запросов
В данной статье предполагается, что база данных содержит локальные таблицы вместо таблиц связанных (или вложенных). Если таблицы связаны, это Информация по-прежнему применяется. Однако существуют дополнительные вопросы, касающиеся производительность запросов в связанных таблицах. Для получения дополнительных сведений о повышении производительность в связанных таблицах, поиск по базе знаний Майкрософт с помощью следующей строки:
odbc and optimizing and tables

Дополнительная информация

Оптимизатор запросов для ядра базы данных Microsoft Jet

Ядро базы данных Jet содержит несколько компонентов, но наиболее важным компонентом для запросов (и особенно комплексных) является оптимизатор. В Оптимизатор функционирует на основе затрат. Это означает, что оптимизатор определяет временные затраты на Каждый запрос задачи и затем выбирает наименее затратную список задач для выполнения который создает предполагаемый результирующий набор. Тем больше времени требуется на выполнение, более дорогие этой задачи.

Чтобы решить, какие стратегии запроса для использования, Оптимизатор использует статистику. Следующие факторы, некоторые из факторов что эти статистические данные основаны на:
  • Количество записей в таблице
  • Количество страниц данных в таблице
  • Расположение таблицы
  • Присутствуют ли индексы
  • Как уникальны индексы
На основе этих статистики, оптимизатор затем выбирает лучший внутренний запрос стратегия работы с конкретным запросом.

В Статистика обновляется каждый раз при компиляции запроса. Запрос помечен для Компиляция при сохранении изменений в запросе (или его базовым таблицам) и При сжатии базы данных. Если запрос помечен для компиляции, Компиляция и обновление статистики происходит при очередной запрос запуск. Компиляция обычно занимает от одной секунды до четырех секунд.

Если добавить значительное количество записей в базу данных, необходимо открыть и Сохраните запросы к повторной компиляции. Например, при разработке и Проверьте запрос, используя небольшой набор образцов данных, необходимо заново компилировать запрос после добавления дополнительных записей в базу данных. При этом, вы Чтобы убедиться, что Оптимальная производительность достигается при вашем приложение уже используется.

Примечание Не удается просмотреть схемы оптимизации ядра базы данных Jet, а не удается указать способ оптимизации запроса. Тем не менее можно использовать базу данных Архивариус, чтобы определить, присутствуют ли индексы и как уникальный индекс Это.

Для получения дополнительных сведений о проблеме, которая может возникнуть при использовании Архивариуса базы данных в Microsoft Access 2000 щелкните следующий номер статьи базы знаний Майкрософт:
207782ACC2000: Об использовании базы данных Архивариус, если открытые объекты

Время запроса

Существуют два измерения значительное время для запроса на выборку.
  • Время отображения первой странице данных
  • Чтобы получить последнюю запись
Если запрос возвращает только один экран с данными, эти два времени измерения являются одинаковыми. Если запрос возвращает слишком много записей, эти времени измерения могут отличаться.

Если два измерения же, при выполнении запроса на выборку в режиме таблицы, увидеть экран с данными и общее количество записей, возвращаемых запросом, например "запись 1 из N." Если выполняется быстрее, для механизма баз данных Jet для отображения первой странице данных, чем Чтобы выполнить запрос и затем Получение последней записи, отображается экран, но нет данных N в "записи 1 N". В N значение пустым, пока запрос не завершится, или пока прокрутки вниз к последней записи.

Данное поведение является результат ядро базы данных Jet, выбрав один из двух стратегий производительности:
  • Выполнение запроса и отображения данных
  • Отображения данных, а затем выполнить запрос
Невозможно управлять стратегия, которая будет использоваться. База данных Jet ядро выбирает стратегию, наиболее эффективно.

Анализ производительности

При использовании Microsoft Access 7.0, Microsoft Access 97, Access 2000 Microsoft Access 2002 или Access 2003 можно использовать анализатор производительности для анализа запросы в базу данных. Поскольку анализ производительности запроса тесно привязанные к СУБД Jet, анализатор производительности предлагает добавить индексы только в том случае, когда индексы фактически используются ядром базы данных Jet для оптимизации запроса. Это означает, что анализатор производительности может предоставлять Советы по повышению производительности, более специфические для базы данных, чем общие варианты перечислены ниже в разделе «Советы по повышению производительности запросов».

Чтобы запускать анализатор быстродействия Access 7.0, в Microsoft Access 97 в Microsoft Access 2000, Access 2002 или Access 2003, выполните следующие действия.

На очередь Сервис меню, нажмите кнопку Анализ, а затем нажмите кнопку Производительность.

Советы для повышения производительности запросов

Для повышения производительности запросов, попробуйте следующие советы:
  • Сжатие базы данных

    При сжатии на База данных может ускорить запросы. При сжатии базы данных, записи таблицы реорганизуются таким образом, чтобы записи находились в смежных базы данных страницы, упорядоченные по первичным ключом таблицы. Это повышает производительность последовательного сканирования записей в таблице, так как только Минимальное количество страниц базы данных, теперь нужно будет прочесть для извлечения записей что нужно. После сжатия базы данных запустите каждый запрос для компиляции запрос таким образом, чтобы каждый запрос теперь будут обладать обновленной статистикой таблицы.
  • Индексировать поля

    Индекс поля, используемые для задания условия для полей запроса и полей индекса на обеих сторонах соединения. Или, Создание отношения между этими полями. При создании отношения с включенными условиями ссылочной целостности, ядро базы данных Jet создает индекс для внешнего ключа, если еще не существует. В противном случае Jet database engine используется существующий индекс.

    Примечание Ядро базы данных Jet автоматически оптимизирует запрос, соединяет таблицы Access на жестком диске и таблицу сервера ODBC, если доступ Таблица — это маленький и если объединенные поля проиндексированы. В этом случае доступ К повышает производительность, запросив только необходимые записи с сервера. Убедитесь, что таблицы объединенные из различных источников проиндексированы по соединения поля.
  • Выберите наименьший тип данных, т.е. соответствующий

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

    Когда вы Создание запроса, добавьте только поля, которые необходимы. В поля, которые используются набор критериев, нажмите кнопку Очистить Показать флажок, если вы не хотите отображать эти поля.
  • Сохраните инструкции SQL как запрос

    Если Источник записей для формы или отчета свойству инструкции SQL Сохраните инструкции SQL как запрос, а затем задайте Источник записей Свойства имени запроса.
  • Избегайте вычисляемых полей

    Избегайте вычисляемых полей вложенные запросы. Если добавить запрос, который содержит вычисляемое поле в другой запрос, выражение вычисляемого поля замедляет запрос верхнего уровня. В следующем примере запрос Q1, используется в качестве входных данных запрос Q2:
    Вопрос 1: ВЫБЕРИТЕ AS IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") X FROM MyTable;
    Тест 2: Выбор * от Q1 там, ГДЕ X = «Заказ подтвержден»;
    Так как IIF нельзя оптимизировать выражение в Q1, Q2 также не может быть оптимизирован. Если вложенные выражения, которое не может быть оптимизирован во вложенном запросе, запрос не может быть оптимизирован.

    Другой вариант построения запрос выглядит следующим образом:
    Вопрос 1: Выбор * из MyTable ГДЕ MyColumn = «Да»;
    Если требуется выражения в выходных данных, попробуйте поместить выражения в элементе управления в форме или отчете. Например можно изменить Предыдущий запрос для параметра запроса, который запрашивает значение MyColumn, а затем создайте форму или отчет на основе запроса. В форме или отчете Затем можно добавить вычисляемый элемент управления, отображающий «Hello» или «Goodbye» в зависимости от значения, находящегося в MyColumn.

    Постройте запрос, как выглядит следующим образом:
    ПАРАМЕТРЫ [для просмотра подтвержденных заказов введите Да. Для просмотра неподтвержденных заказов введите номер] Текст;
    ВЫБЕРИТЕ *
    ИЗ MyTable
    WHERE МойСтолбец = [для просмотра подтвержденных заказов введите Да. Для просмотра неподтвержденных заказов введите номер];
    В вычисляемом элементе управления в форме или отчете введите:
    = IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed")
  • Укажите группу по

    При группировке записей по значения в связанных полях укажите Group By для поля, в том же таблицы как поле группировки (расчет группировки по). Для Пример Northwind.mdb образца базы данных, если создать запрос суммирует поле Кол-во в таблицу сведения О заказе и группами Код заказа, можно указать Group By для поля «КодЗаказа» в сведения О заказе Таблица. Если указать Group By для поля «КодЗаказа» в таблицу «Заказы» Необходимо сначала объединить все записи и затем выполнить группировку, вместо доступа Выполнение статистических выражений и последующего объединения только нужных полей.

    Для увеличения скорости используйте Group By по полям, как можно меньше максимально возможного. Кроме того, с помощью Первый функции, если это возможно.

    Если итоговый запрос включает объединение, Рассмотрите возможность группировки записей в одном запросе, а затем добавление этого запроса для Разделите запрос, выполняющий объединение. При этом производительность может быть Повышение с некоторых запросов.
  • Избегайте строгих условий запроса

    Избегайте ограничения условия запроса на вычисляемые поля и на неиндексированные поля, если это возможно. Использование условия выражения, которые можно оптимизировать.
  • Проверьте производительность запроса в поле, которое используется в соединение таблиц

    Если использовать условия для ограничения диапазона значений поле, используемое в объединении таблиц с отношением «один ко многим» Проверьте, выполняется ли запрос быстрее с критериями, помещенные на стороне «один» или на стороне «многие» объединения. В некоторых запросах можно реализовать быстрее производительность путем добавления условий для поля на стороне «один» Вместо того, чтобы на «многие» сторона соединения.
  • Индекс поля сортировки

    Индексируйте поля, используемые для сортировки.
  • Использовать запрос на создание таблицы для создания таблиц

    Если ваш данные редко меняется, используйте запрос на создание таблицы для создания таблиц в запросе результаты. Используйте результирующие таблицы вместо запросов в качестве основы для вашего формы, отчеты и другие запросы. Убедитесь в том, что добавление индексов в соответствии с рекомендациями, которые можно прочитать в этой статье.
  • Избегайте использования статистических функций по подмножеству

    Избегайте использования статистические функции, такие как DLookup функции доступа к данным из таблицы, которая не находится в запросе. Статистические функции по подмножеству специфичны для доступа, а это означает, что Jet компонент Database engine не может оптимизировать запросы, использующие статистические функции по подмножеству. Вместо этого добавьте в запрос таблицу, к которой обращается функция или создать вложенный запрос.
  • Используйте фиксированные заголовки столбцов

    Если вы создаете перекрестный запрос, используйте фиксированные заголовки столбцов при любой возможности.
  • Использование операторов

    Использование Между...И оператор, В оператор и = оператор в индексированных полях.
  • Оптимизация производительности сервера

    Для массового обновления запросы к источникам данных ODBC, оптимизации производительности на сервере Установка FailOnError Свойство "Да".

Ссылки

Дополнительные сведения об оптимизации производительности в Microsoft Access 2000 Справка Microsoft Access В менюСправка Тип меню Оптимизация Высокая производительность в поле помощника Office или мастера ответов и нажмите кнопку Поиск Чтобы просмотреть раздел.
Дополнительные сведения об оптимизации производительности в Microsoft Access 2002 нажмите кнопку Справка Microsoft Access В менюСправка Тип меню Улучшение доступа база данных в поле помощника Office или мастера ответов и нажмите кнопку Поиск Чтобы просмотреть раздел.

Для получения дополнительных сведений о повышении производительности в Access 2003, нажмите кнопку Доступ К справке Microsoft Office В меню Справка Тип меню Повысить производительность базы данных Access В диалоговом окне Для поиска на панели помощника, а затем щелкните Начать поиск Чтобы просмотреть раздел.

Для получения дополнительных сведений об использовании индексов в Access 2000 щелкните следующий номер статьи базы знаний Майкрософт:
209564ACC2000: Составные индексы должны ограничить первого индексированного поля.

Свойства

Код статьи: 209126 - Последний отзыв: 17 сентября 2011 г. - Revision: 6.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Ключевые слова: 
kbquery kbhowto kbperformance kbinfo kbusage kbmt KB209126 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:209126

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com