Индексные предложения

В качестве теоретического вопроса о базе данных, если вас спросят "какие индексы вы бы предложили и почему?" ответы от primary, clustering а также secondary индекс? Как бы мы узнали, если бы мы представили один из этих против B-Tree?

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

1 ответ

Решение

primary а также secondary индексы ортогональны b-tree а также hash индексы, и оба они ортогональны clustered а также non-clustered индексы.

  • Первый класс индексов - это логические индексы. Они являются индикаторами высокого уровня о структуре ваших данных. Первичный ключ должен однозначно идентифицировать ваши данные, что означает, что он должен быть одним из того, что теория баз данных отношений называет "ключом-кандидатом". Вторичные индексы предназначены для ускорения запросов к другим полям, отличным от основного индекса, и они не должны быть ключами-кандидатами.

  • Второй класс - это конкретные реализации индекса, пригодные для слегка отличающихся запросов. b-tree может выполнять запросы диапазона (WHERE c > 3 AND c < 7) который hash не могу. hash Тем не менее, O(1) (постоянное время) в среднем случае для точных запросов (WHERE c = 5), в то время как b-tree всегда O (LG N) (логарифмическое время). b-tree а также hash это четко определенные структуры данных, но они имеют очень мало общего с вашими фактическими данными.

  • Третий класс определяет, будет ли вся таблица отсортирована на диске по порядку сортировки индекса. Если это так, это называется clustered индекс.

Как вы можете видеть, индекс может быть primary clustered b-tree или primary clustered hash или какая-то другая комбинация, взятая из этих трех разных классов.


Если бы вас спросили, какие индексы ввести, ответ был бы в первую очередь из первого класса. Вопрос наверное о схеме. Это, по крайней мере, ваша отправная точка. Только когда вы решили, какие индексы вводить, вам нужно подумать о том, должны ли они быть b-деревьями, кластеризованными и т. Д. Первый класс - логический, тесно связанный с тем, как вы используете данные. Остальные детали реализации.

Другие вопросы по тегам