Как установить индексированность полей в access
Перейти к содержимому

Как установить индексированность полей в access

  • автор:

Как установить индексированность полей в access

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

В этой статье дается описание индексов; рассматривается, какие поля следует индексировать; описывается создание, удаление и изменение индексов. Кроме того, в этой статье объясняется, в каких случаях приложение Access создает индексы автоматически.

В этой статье

Примечание: Методы, описанные в данной статье, нельзя использовать для создания индекса для таблицы веб-базы данных. Производительность веб-базы данных зависит от нескольких факторов, например производительности сервера SharePoint, на котором она размещена.

Что такое индекс?

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

Выбор полей для индексирования

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

Примечание: Первичный ключ таблицы индексируется автоматически.

Индексировать поля с типом данных «Объект OLE», «Вычисляемый» или «Вложение» невозможно. Индексировать другие поля следует в тех случаях, когда выполняются все указанные ниже условия.

Тип данных поля: «Короткий текст» («Текст» в Access 2010), «Длинный текст» («Поле МЕМО» в Access 2010), «Число», «Дата/время», «Автонум», «Валюта», «Да/Нет» или «Гиперссылка».

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

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

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

Составные индексы

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

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

В составной индекс можно включить до 10 полей.

Создание индекса

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

Параметр свойства «Индексированное поле»

Не создавать индекс для этого поля (или удалить существующий индекс)

Да (допускаются совпадения)

Создать индекс для этого поля

Да (совпадения не допускаются)

Создать уникальный индекс для этого поля

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

Создание индекса для одного поля

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

Щелкните пункт Имя поля для поля, которое следует индексировать.

В разделе Свойства поля откройте вкладку Общие.

В свойстве Индексированное выберите значение Да (допускаются совпадения), если следует разрешить повторяющиеся значения, или значение Да (совпадения не допускаются), чтобы создать уникальный индекс.

Чтобы сохранить изменения, щелкните элемент Сохранить на панели быстрого доступа или нажмите клавиши CTRL+S.

Создание составного индекса

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

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

На вкладке Конструктор в группе Показать или скрыть щелкните пункт Индексы.

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

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

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

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

Чтобы изменить порядок сортировки значений полей, в столбце Порядок сортировки окна «Индексы» щелкните пункт По возрастанию или По убыванию. По умолчанию выполняется сортировка по возрастанию.

В разделе Свойства индекса окна Индексы укажите свойства индекса для строки в столбце Имя индекса, содержащем имя индекса. Задайте свойства в соответствии с таблицей ниже.

Если Да, то индекс является первичным ключом.

Если Да, то каждое индексируемое значение должно быть уникальным.

Пропуск пустых полей

Если Да, то записи с пустыми значениями в индексируемых полях будут исключены из индекса.

Чтобы сохранить изменения, нажмите кнопку Сохранить на панели быстрого доступа или нажмите клавиши CTRL+S.

Закройте окно «Индексы».

Удаление индекса

Если индекс становится ненужным или приводит к значительному снижению производительности, его можно удалить. При этом удаляется только сам индекс, а не поля, на которых он основан.

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

На вкладке Конструктор в группе Показать или скрыть щелкните пункт Индексы.

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

В окне «Индексы» выделите строки, содержащие индекс, который следует удалить, и нажмите клавишу DELETE.

Чтобы сохранить изменения, нажмите кнопку Сохранить на панели быстрого доступа или нажмите клавиши CTRL+S.

Закройте окно Индексы

Просмотр или редактирование индексов

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

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

На вкладке Конструктор в группе Показать или скрыть щелкните пункт Индексы.

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

Просмотрите или измените индексы и свойства индексов в соответствии со своими задачами.

Чтобы сохранить изменения, нажмите кнопку Сохранить на панели быстрого доступа или нажмите клавиши CTRL+S.

Закройте окно Индексы

Автоматическое создание индексов

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

Для автоматического создания индекса также можно использовать параметр Автоиндекс при импорте и создании в диалоговом окне Параметры Access. Access автоматически проиндексирует все поля, имена которых начинаются с указанных в поле Автоиндекс при импорте и создании знаков или заканчиваются ими, например ID, ключ, код или число. Чтобы просмотреть или изменить текущие параметры, сделайте следующее:

Выберите Файл > Параметры.

Щелкните Конструкторы объектов, а затем в разделе Конструктор таблиц добавьте, измените или удалите значения в поле Автоиндекс при импорте и создании. Для разделения значений используйте точку с запятой (;).

Примечание: Если имя поля начинается со значения, указанного в списке, или заканчивается им, поле будет автоматически проиндексировано.

Нажмите кнопку ОК.

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

2.8. Создание индексов.

Access позволяет создавать индексы двух типов: простые и составные.

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

Создадим простой индекс по полю «Номер_П» для таблицы

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

Вариант «Да. Совпадения не допускаются» создает индекс, хранящий только уникальное значение данного поля.

Вариант «Да. Допускаются совпадения» разрешает наличие повторяющихся значений для индексируемого поля.

Вариант “Нет” автоматически устанавливается для первичного ключа таблицы.

Выберем вариант «Да. Совпадения не допускаются»

Для задания составного индекса по полям «Фамилия», «Имя» и «Отчество» по таблице «Студенты», не выходя из режима конструктора, сделаем активной таблицу «Студенты», щелкнув по ней мышкой. Затем выберем в меню «Вид» команду «Индекс..». Открывшееся окно описаний индексов содержит первичный ключ для данной таблицы по полю «Номер_С».

Для построения составного индекса помещаем курсор вниз на пустую строку, и вводим в столбце «Индекс» имя индекса «Составной для ФИО». В столбце «Имя поля» выбираем из всплывающего списка имя «Фамилия». Для добавления в этот индекс нового поля помещаем курсор на следующую строку и таким же образом указываем имя нужного поля. Введем, таким образом, поля «Имя» и «Отчество».

Для удаления существующего индекса выделяется строка описания индекса щелчком мыши и нажимается клавиша «Del».

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

Примечание для версии ACCESS 2.0:

Сохраним созданный проект базы данных, вернувшись в окно базы данных, и выполнив команду «Save» меню «File». В появившемся диалоговом окне введем имя сохраняемого проекта: «stud.mdb».

Для версии ACCESS 97 созданный проект сохраняется автоматически.

Результаты работы

В результате выполнения лабораторной работы создан проект базы данных STUD.

Создание и использование индексов

С целью ускорения поиска и сортировки данных в любой СУБД используются индексы. Индекс является средством, которое обеспечивает быстрый доступ киданным в таблице на основе значений одного или нескольких столбцов. Индекс представляет собой упорядоченный список значений и ссылок на те записи, в которых хранятся эти значения. Чтобы найти нужные записи, СУБД сначала ищет требуемое значение в индексе, а затем по ссылкам быстро отбирает соответствующие записи. Индексы бывают двух типов: простые и составные. Простые индексы представляют собой индексы, созданные по одному столбцу. Индекс, построенный по нескольким столбцам, называется составным. Примером составного индекса может быть индекс, построенный по столбцам "Фамилия" и "Имя".

Однако применение индексов приносит не только преимущества, но и недостатки. Главным среди них является тот, что при добавлении и удалении записей или при обновлении значений в индексном столбце требуется обновлять индекс, что при большом количестве индексов в таблице может замедлять работу. Поэтому индексы обычно рекомендуется создавать только для тех столбцов таблицы, по которым наиболее часто выполняется поиск записей. Во многих СУБД (например, FoxPro) индексы хранятся в отдельных файлах и являются предметом заботы разработчиков, т. к. при нарушении индекса поиск данных выполняется некорректно. В Microsoft Access индексы хранятся в том же файле базы данных, что и таблицы и другие объекты Access. Индексировать можно любые поля, кроме МЕМО-полей, полей типа Гиперссылка и объектов OLE.

Чтобы создать простой индекс, необходимо:

  1. Открыть таблицу в режиме Конструктора.
  2. Выбрать поле, для которого требуется создать индекс.
  3. Открыть вкладку Общие (General) и выбрать для свойства Индексированное поле (Indexed) значение Да (Допускаются совпадения) (Yes (Duplicates OK)) или Да (Совпадения не допускаются) (Yes (No duplicates)) (рис. 2.24).

Ключевое поле таблицы автоматически индексируется и свойству Индексированное поле (Indexed) присваивается значение Да (Совпадения не допускаются) (Yes (No duplicates)).

Составной индекс создается в специальном диалоговом окне. Чтобы создать составной индекс, необходимо:

  1. Открыть таблицу в режиме Конструктора.
  2. На панели инструментов Конструктор таблиц (Table Design) нажать кнопку Индексы (Indexes.)
  3. В первой пустой строке (рис. 2.25) поля Индекс (Index Name) ввести имя индекса.

По умолчанию устанавливается порядок сортировки По возрастанию (Ascending). Для сортировки данных полей по убыванию в поле Порядок сортировки (Sort Order) в окне индексов укажите значение По убыванию (Descending).

Диалоговое окно Индексы (Indexes) используется также для просмотра, изменения и удаления существующих индексов. Изменить можно:

  • название индекса в поле Индекс (Index Name);
  • поле таблицы, соответствующее данному индексу, выбрав новое поле из списка в поле Имя поля (Field Name);
  • порядок сортировки в поле Порядок сортировки (Sort Order); П свойства данного индекса в нижней части окна (рис. 2.26):
    • Ключевое поле (Primary) определяет, является ли индексированное поле ключевым;
    • Уникальный индекс (Unique) определяет, должно ли быть каждое значение в этом поле уникальным;
    • Пропуск пустых полей (Ignore Nulls) определяет, включаются или не включаются в индекс записи с пустым (Null) значением данного поля.

    Удаление индекса выполняется точно так же, как удаление поля в Конструкторе таблиц. Просто выделите строку с нужным индексом и нажмите клавишу <Delete> или воспользуйтесь контекстным меню.

    Составной индекс в MS Access

    Есть таблица «Контрагенты» некой базы данных, в которой имеются поля: Код контрагента, Организация, Адрес, Телефон.

    Возникла необходимость контролировать уникальность записей данной таблицы, т.к. ни одно из полей по отдельности не может быть уникальным. Можно конечно сделать поле «Телефон» ключевым, вот только, что если телефон контрагент не укажет, а пустым ключевое поле вряд ли можно сделать.

    Рис. 1. Таблица «Контрагенты»

    Рис. 1. Таблица «Контрагенты»

    Запускаем « MS Access 2002», открываем таблицу «Контрагенты» в режиме конструктора, после чего выбираем в главном меню раздел «Вид – Индексы» или соответствующую ему кнопку на панели инструментов. Откроется окно, в котором нужно задать имя составного индекса , а также поля ,которые в него будут входить и ниже три настройки: Ключевое поле, Уникальный индекс, Пропуск пустых полей.

    Рис. 2. Окно настройки составного индекса

    Теперь в БД нельзя ввести 2 одинаковых записи в таблицу «Контрагенты».

    Рис. 3. Проверка составного индекса

    Рис. 3. Проверка составного индекса

    При этом плохо, что внешне никак не видно составной индекс, даже в конструкторе, что плохо. Поэтому лучше выставить еще свойство «Ключевое поле», при этом в режиме конструктора поля, входящие в составной индекс пометятся ключами.

    Рис. 4. Слева просто составной уникальный индекс, справа – еще и с ключевыми полями

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *