Понимание того, как хранятся данные – является основой понимание того, как получить к ним доступ.
Куча – это коллекция страниц данных, содержащих строки для таблицы:
Каждая страница данных содержит 8 килобайт информации. Группа и 8-и рядом стоящих страниц называется пространством.
Строки данных не хранятся в каком-либо определённом порядке, и нет определённого порядка для последовательности страниц.
Страницы данных не связаны в связанные списки.
Когда строка вставляется в страницу и страница переполнена, страница разделяется.
Сервер SQL получает доступ к данным одним из следующих способов:
Сканирует все страницы таблицы – сканирование таблицы. Когда SQL Server выполняет сканирование таблицы он:
o Начинает с начала таблицы;
o Сканирует от страницы к странице через все строки таблицы;
o Выделяет строку, которая соответствует запросу.
Используя индексы. Когда SQL Server использует индексы, он:
o Пересекает структуру дерева индексов для поиска строк, соответствующих запросу;
o Выделяет только необходимые строки, соответствующие критериям запроса.
Первым делом, SQL Server определяет, какие индексы существуют. Оптимизатор запроса (компонент, предназначенный для генерирования оптимального плана для запроса) определяет что использовать – сканировать таблицу или индексы. Индексы более предпочтительны.
Когда вы рассматриваете, нужно ли создавать индексы, рассчитайте два фактора, для гарантирования, что индексы будут более эффективны, чем сканирование таблицы: природа данных и природа запросов к таблице.
Индексы ускоряют доступ к данным. Для примера, без индекса, без индексы вам понадобится перелистать постранично всю книгу для определения содержания. По содержанию легче найти интересующую информацию.
Сервер SQL использует индексы для указания на расположение строки в странице данных вместо просматривания всех страниц таблицы. Рассматривайте следующие факты и рекомендации об индексах:
Индексы обычно увеличивают скорость выполнения запросов связанных таблиц и выполнение сортировки и группировки;
Индексы принуждают делать строки уникальными, если включена уникальность.
Индексы создаются в порядке возрастания или уменьшения.
Индексы достаточно полезны, но они занимают место на диске и берут на себя дополнительные накладные расходы и расходы на эксплуатацию. Рассматривайте следующие факты и рекомендации об индексах:
Когда вы изменяете данные в индексной колонке, сервер SQL обновляет связанные индексы.
Накладные расходы на поддержку индексов требуют времени и ресурсов. Поэтому не создавайте индексы, которые не будете часто использовать.
Индексы на колонки, содержащие большое количество доблирующих данных могут иметь несколько преимуществ.
Архитектура индексов для кластерных и не кластерных индексов различна. Понимание разницы в архитектурах поможет вам создать наиболее эффективный тип индекса.
Сервер SQL содержит данные в страницах данных в куче, если не объявлен кластерный индекс в таблице. SQL Server:
Использует страницы карты расположения индексов (Index Allocation Map IAM). Страницы IAM:
o Содержат информацию, где находится пространство кучи;
o Используется для навигации через кучу и находит доступное пространство для вставки новых строк;
o Соединяется со страницами данных;
Возвращает пространство для новых строк в кучу, когда строка удаляется.
Кластерные индексы часто используются для колонок, которые часто используются для поиска, для ряда ключевых значений, или для доступа к отсортированному списку. Когда вы создаёте кластерный индекс, рассматривайте следующие замечания и рекомендации:
Каждая таблица может иметь только один кластерный индекс;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.