Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




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

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


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

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

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

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

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

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

 

 


Поделиться:

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





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты