#sql #база_данных #sql_server
Есть несколько индексов такого вида: CREATE INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (VendorID); На MSDN здесь (в разделе "примеры", первый пример) сказано, что это "простой некластеризованный индекс". Что это значит? Обычный первичный ключ? Может быть, глупый вопрос, но для меня не очевидно, хотелось бы быть уверенным.
Ответы
Ответ 1
На Хабре есть аааааабалденная статья на тему индексов. Очень советую. Если вкратце, то: Индекс использует дерево для быстрого обращения к данным. У кластеризованного индекса в листьях дерева лежат сами строки данных. В силу природы дерева данные хранятся в уже отсортированном виде, поэтому кластеризованный индекс может быть только один. У некластеризованного индекса в листьях дерева лежат указатели на строки данных, т.е. для чтения данных необходима еще одна операция. Т.о. кластеризованных индексов у таблицы может быть несколько. Что это значит? Обычный первичный ключ? Понятие первичного ключа в общем-то не связано с индексом. В таблице может быть колонка, являющаяся первичным ключом, но без индекса. Однако на первичные ключи как правило создают кластеризованный индекс. В вашем вопросе VendorID это скорее просто foreign key -- на них обычно создают некластеризованные индексы.
Комментариев нет:
Отправить комментарий