Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оптимизация запросов




Существует ряд способов ускорения выполнения запросов. В дополнение к перечисленным ниже приемам конкретные запросы в базе данных могут быть исследованы с помощью анализатора быстродействия. Для получения дополнительных сведений об использовании анализатора быстродействия нажмите кнопку.

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

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

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

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

·При создании запроса не добавляйте лишние поля в запрос. Снимите флажок Вывод на экран для полей, используемых в условиях отбора, если не предполагается вывод в запросе содержимого этих полей.

·Если в качестве значения для свойства Источник записей (RecordSource) формы или отчета задана инструкция SQL, то следует сохранить ее как запрос, а затем указать в качестве источника записей имя запроса. Для получения дополнительных сведений нажмите кнопку.

·Старайтесь не использовать вычисляемые поля в подчиненных запросах. Необходимость расчета выражения при добавлении запроса с вычисляемыми полями в другой запрос замедляет выполнение запроса верхнего уровня. Предположим, например, что запрос Q1 является подчиненным для запроса Q2:

Q1: SELECT IIF([MyColumn]="Да","Заказ подтвержден","Заказ не подтвержден") AS X FROM MyTable;

Q2: SELECT * FROM Q1 WHERE X="Заказ подтвержден";

 

Так как выражение с IIf в запросе Q1 нельзя оптимизировать, то и запрос Q2 не может быть оптимизирован. Таким образом, если нельзя оптимизировать выражение во вложенном запросе, то и весь запрос целиком не может быть оптимизирован.

Существует другой вариант построения запроса:

Q1: SELECT * FROM MyTable WHERE MyColumn = "Да";

Если в результатах запроса необходимо присутствие выражений, то следует поместить их в элементе управления в форме или отчете. Например, предыдущий запрос можно было преобразовать в запрос с параметрами, в который бы вводились значения для поля «MyColumn», а затем на его основе создать форму или отчет. Затем в форму или отчет можно добавить вычисляемый элемент управления, выводящий на экран строки «Привет» или «Пока» в зависимости от значения в поле «MyColumn».

Запрос следует построить следующим образом:

PARAMETERS [Для просмотра подтвержденных заказов введите Да. Для просмотра неподтвержденных заказов введите Нет.] Text;

SELECT *

FROM MyTable

WHERE MyColumn = [Для просмотра подтвержденных заказов введите Да. Для просмотра неподтвержденных заказов введите Нет.];

 

В вычисляемый элемент управления в форме или отчете вводится следующее:

=IIF([MyColumn]="Да","Заказ подтвержден","Заказ не подтвержден")

·При группировке записей по значениям полей, участвующих в объединении, определяйте условие группировки в ячейке Групповая операция для поля в той же таблице, в которой находится поле, для которого выполняются расчеты статистических функций. Например, если рассчитывается итоговое значение поля «Количество» в таблице «Заказано», а записи группируются по полю «КодЗаказа», то условие группировки следует определить для поля «КодЗаказа» в таблице «Заказано», а не для поля «КодЗаказа» в таблице «Заказы». Если условие группировки определить для поля «КодЗаказа» в таблице «Заказы», то сначала будут объединены все записи, а потом выполнен расчет статистических функций, вместо того, чтобы сделать наоборот, сначала проведя расчет, а потом объединив только необходимые поля.

Для повышения производительности определяйте условия группировки для минимально возможного числа полей. В качестве альтернативы используйте функцию First. Для получения дополнительных сведений о функции First нажмите кнопку.

Если в итоговом запросе выполняется объединение, старайтесь использовать группировку записей только в одном запросе и добавляйте этот запрос в отдельный запрос, в котором выполняется объединение. Это повысит быстродействие некоторых запросов.

·По возможности избегайте определения в запросах условий отбора для вычисляемых и неиндексированных полей.

Используйте для условий отбора выражения, позволяющие оптимизировать запрос. Для получения дополнительных сведений об оптимизации выражений с помощью технологии Rushmore нажмите кнопку.

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

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

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

·Старайтесь не использовать статистические функции по подмножеству, например функцию Dlookup, в запросе, в котором производится обращение к табличным данным. Статистические функции по подмножеству довольно специфичны для Microsoft Access, поэтому ядро базы данных Microsoft Jet не может оптимизировать использующие их запросы. Вместо этого добавляйте таблицу в запрос или создавайте подчиненный запрос.

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

·Применяйте операторы Between...And, In и = к индексированным полям.

·Чтобы ускорить выполнение на сервере запросов на обновление больших объемов данных из источников данных ODBC, задайте для свойства FailOnError значение Да. Для получения дополнительных сведений нажмите кнопку.

Примечание. Для получения сведений об оптимизации выполнения внешней базы данных SQL нажмите кнопку.

 

{ewc HLP95EN.DLL, DYNALINK, "Связь с Web или другими источниками":"acconGeneralGuidelinesMakingQueriesRunFasterSW":1:"Foo":"Invisible"}

K Оптимизация выражений для условий в запросах по технологии Rushmore

Существует возможность оптимизации простых и сложных выражений в строке Условие отбора в бланке запроса или в предложении WHERE в инструкции SQL SELECT. Для определенных типов сложных выражений используется Rushmore — технология доступа к данным, используемая ядром базы данных Microsoft Jet для достижения более высокого уровня оптимизации.




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 512; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.