Как хранится индекс varchar? - PullRequest
       0

Как хранится индекс varchar?

3 голосов
/ 15 декабря 2011

Я пытаюсь понять последствия индексации столбца varchar.Если столбец был длиной 150 символов, как хранятся индексы?Например, я понимаю, как btree используется при индексации столбца int, но varchar состоит из нескольких символов. Является ли индекс по сути составным индексом, состоящим из char [1], затем char [2] и т. Д.?

Чтобы упростить пример, если бы у меня были значения AAA, AAB, ABB, ABC и т. Д., Как бы выглядела структура индекса?

1 Ответ

5 голосов
/ 15 декабря 2011

Ваши значения столбцов varchar(150) будут отсортированы в алфавитном порядке (определяется с помощью используемой вами сортировки) в виде строк (а не массивов символов).Таким образом, в конце концов, у вас есть один длинный список отсортированных строк.

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

При таком расположении, при котором читается всего несколько страниц,SQL Server достигнет конечного уровня индекса и сможет получать ваши данные.Так что на самом деле строки интерпретируются как атомарные строки, а не соединения символов или что-то еще.

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

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