Неплотное индексирование — базы данных

Для поиска нужной записи используется RID. Но на самом деле SQL серверы работают не с записями, а со страницами. Считывается каждый раз страница, а внутри страницы ищется нужная запись. А раз так то на самом деле RID (Record идентификатор) можно заменить на идентификатор страниц.

Поскольку на странице может умещаться несколько сот записей, то фактически общий индекс может быть уменьшен. Т.е считывается из памяти страница равная 1 Кбайту, 2 или 4(короче до 8 Кбайт), потом поиск нужной записи происходит не на диске а в оперативной памяти, поиск в оперативной памяти в 1000 раз быстрее, таким образом поиск сокращается. Вместо указателей на запись можно использовать указатели страниц.

Например, если говорить о городах, то страница, где расположены все поставщики: London, Paris и тд. (в зависимости от того как выбирается).

Такой индекс называется неплотным (sparse). Если в файле поставщиков выполнена кластеризация по какому-то полю, например по номеру поставщика, а также по нему создан индекс, то номера все хранить и не требуется. По скольку в этом случае получается: на каждой странице храниться какое то количество записей, упорядоченных в порядке возрастания этого номера. Например, идентификатор будет на 100, на 200, на 300, на 400, а номера поставщиков будут на отдельной странице находиться, т.е если они там физически упорядоченны, что делается при кластеризации, то индекс достаточно указать на страницу (обычный индекс), а на странице они все будут находиться подряд (101, 102 и тд). И поиск там не является проблемой.


Оставить комментарий





Статистика

Рейтинг@Mail.ru