Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭУМКД_БД_1.doc
Скачиваний:
15
Добавлен:
23.09.2019
Размер:
4.19 Mб
Скачать

2.4.16. Индексирование по комбинации полей

Строить индекс можно на основе комбинации значений двух или более полей. Например, на следующем рисунке изображён индекс по комбинации полей «город» и «статус» (к слову, такие индексы сейчас очень активно используются):

Рисунок 2.4.16.1 – Индексирование по комбинации полей

С помощью такого индекса мы можем ответить на такие вопросы, как «найти всех поставщиков в Париже со статусом 10» за один просмотр индекса.

Если комбинированного индекса не существует, ответ на этот вопрос потребует:

  1. поиска всех поставщиков в Париже;

  2. поиска всех поставщиков со статусом 10;

  3. выделения поставщиков, общих для обоих списков.

Шаги 1 и 2 могут быть выполнены также и в обратном порядке (2, затем 1), поэтому появится задача выбора стратегии (какой шаг выполнять первым).

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

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

2.4.17. Селективный индекс

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

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

Например, рассмотрим файл «Служащие», в котором 5% служащих освобождено от уплаты налогов и 95% такого освобождения не имеют.

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

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

2.4.18. Индексация по методу сжатия

Методы сжатия позволяют сокращать объём памяти, занимаемой данными, путем замены некоторой части данных представлением того, что отличает их от других (последующих и/или предшествующих) данных.

Эти методы могут быть использованы везде, где доступ к данным должен осуществляться последовательно, например, в пределах индекса или в пределах одной «группы» файла, для которого существует неплотный индекс.

Рассмотрим в качестве примера один блок индекса гипотетического файла «Служащие».

Предположим, что первые четыре элемента в этом блоке соответствуют следующим служащим:

  • ROBERTON

  • ROBERTSON

  • ROBERTSTONE

  • ROBINSON

Допустим, что имена служащих не могут быть длиннее 12-ти символов, так что каждое из этих имён может рассматриваться (в несжатом виде) дополненным справа соответствующим числом пробелов (до длины в 12 символов).

2.4.19. Фронтальное сжатие

Первый метод сжатия, который мы рассмотрим – фронтальное сжатие.

Суть метода состоит в том, что у каждого элемента все первые (фронтальные) символы, совпадающие с соответствующими фронтальными символами предшествующего элемента, замещаются соответствующим счётчиком.

Результатом применения этого метода будет:

  • 0 – ROBERTON****

  • 6 – SON***

  • 7 – TONE*

  • 3 – INSON****

Все завершающие пробелы в дачном случае обозначены *.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]