Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Получение заданного количества первых записей

Поиск

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

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


компоненты попадут в верхнюю часть таблицы. Но вы не сможете с легкостью сообщить Access о том, что нужно получить 10 записей и остановиться. В этой ситуации у режима Конструктора запросов есть инструмент, способный помочь вам выйти из затруднительно­го положения. Далее описан его принцип работы.

1. Откройте запрос в Конструкторе (или создайте новый запрос и добавьте поля, которые
хотите использовать).

В данном примере используется таблица Products и добавляются поля ProductName и Price.

2. Отсортируйте таблицу так, чтобы наиболее интересные для вас записи оказались в верхней части таблицы.

Если вы хотите найти самые дорогостоящие продукты, вставьте сортировку по убыва­нию в поле Price.

 
 

3. В поле Работа с запросами | КонструкторНастройка запросаВозврат (Query Tools | Design → Query Setup → Return) выберите другой вариант (рис. 6.8).
Стандартный вариант для этого поля — Все (All), получение всех соответствующих
условию записей. Но можно выбрать 5, 25 или 100 для получения 5, 25 или 100 первых
записей соответственно. Можно также задать значение в процентах, например, 25% для
получения первой четверти всех отобранных записей.

 

Рис. 6.8. Если нужного вам количества записей нет в списке, просто введите его в поле Возврат собственноручно. Ничего не помешает вам отобрать 27 наиболее дорогостоящих продуктов

 


Примечание

Для того чтобы поле Работа с запросами | КонструкторНастройка запросаВозврат нормально функционировало, следует выбрать подходящий порядок сортировки. Важность этого условия будет понятна, если узнать немного больше о принципе работы данного инстру­мента. Если задать программе Access извлечение только пяти записей, она на самом деле вы­полнит обычный запрос, отберет все записи, удовлетворяющие заданным условиям, и упоря­дочит их в соответствии с вашим порядком сортировки. Затем программа отбросит все кроме первых пяти записей в списке. Если отсортировать ваш список так, что первыми будут идти самые дорогостоящие продукты (как в данном примере), врезультате вы получите пять самых опустошительных для бюджета продуктов.

 

 

 
 

4. Выполните ваш запрос для отображения результатов (рис. 6.9).

 

Рис. 6.9. Пять самых дорогостоящих продуктов

 

 

Практические занятия для опытных пользователей.

Как индексы ускоряют поиск

В главе 4 вы познакомились с табличными индексами и научились создавать их. (Индекс — это перечень всех значений в одном поле в отсортированном порядке. Рядом с каждым значением хранится указатель на полную запись в таблице.) У индексов два назначения. Во-первых, они препятствуют возникновению дублирую­щихся значений (см. разд. "Предотвращение дублирования значений с помощью индек­сов" главы 4). Во-вторых, они помогают программе Access выполнять поиск с более вы­сокой скоростью. Зачастую Access может искать, пользуясь индексом, быстрее, чем просматривая целую таблицу. Не только потому, что индекс меньше физически (поскольку он содержит значения только одного поля), но и потому, что он отсортиро­ван, и программа может быстрее перейти в нужное место.

Для того чтобы понять разницу, предположим, что вы с помощью программы Access хо­тите найти запись "Bavarian Tart" в таблице Products. Если у вас есть индекс для поля ProductName, Access может просматривать раздел для буквы "В", дока не найдет нуж­ное значение, и затем перейти к полному набору деталей. Если же индекса нет, про­грамме придется просмотреть всю таблицу, запись за записью. Таблица не отсортирова­на, поэтому нельзя сказать, сколько пройдет времени до того, как Access случайно натолкнется на нужную запись.


На первый взгляд индексы кажутся невероятно полезными, и вы готовы попытаться создать их для всех полей вашей таблицы. Но у индексов есть и недостатки. Чем больше индексов создано, тем больше работы приходится выполнять программе Access при до­бавлении и обновлении записей. Кроме того, каждый индекс занимает какое-то место. В действительности индексы расходуют ресурсы, как бы они не повышали производи­тельность поиска.

Далее перечислены ситуации, в которых следует рассматривать возможность примене­ния индекса для ускорения поиска.

У вас БД большого объема. Если у вас несколько сотен записей, Access почти всегда благодаря принципам работы жесткого диска может просмотреть быстрее всю таблицу, чем применять индекс. Даже если у вас тысячи записей, программа Access часто может загрузить весь набор в оперативную память вашего компьютера, поэтому ей не придется ждать отклика жесткого диска, и все ваши запросы становятся молниеносными.

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

Поле, которое вы хотите индексировать, используется в поиске. Не индексируйте поле, если вы не применяете его в условии отбора. Если вы часто ищете отдельного конкретного клиента, применяя подстановку его фамилии, добавьте индекс в поле LastName (фамилия).

Поле, которое вы хотите индексировать, содержит уникальные (или почти уникальные) значения. Есть смысл добавить индекс к полю ProductName в таблице Products, поскольку лишь у нескольких продуктов (если такие есть вообще) одинаковое название. С другой стороны, не стоит индексировать поле City в таблице Customers, поскольку множество клиентов живет в одном и том же городе, в результате индекс в поле City будет неэффективен и, возможно, программа Access вообще им не воспользуется.

 

 



Поделиться:


Последнее изменение этой страницы: 2016-08-14; просмотров: 135; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.134.161 (0.007 с.)