Что на самом деле означает Кластерный и Некластерный индекс?

Нет, не используйте ggplot. См. Обсуждение в потоке в http://groups.google.com/group/ggplot2/browse_thread/thread/8d2acbfc59d2f247 , где Хэдли объясняет, почему это невозможно, но дает предложенную альтернативу (граненые графики, один со всеми данными, один увеличен в определенной области).

971
задан DineshDB 23 March 2018 в 07:11
поделиться

3 ответа

При использовании кластерного индекса строки физически хранятся на диске в том же порядке, что и индекс. Следовательно, может быть только один кластеризованный индекс.

При некластеризованном индексе существует второй список, который имеет указатели на физические строки. У вас может быть много некластеризованных индексов, хотя каждый новый индекс увеличивает время, необходимое для записи новых записей.

Обычно быстрее читать из кластерного индекса, если вы хотите вернуть все столбцы. Вам не нужно сначала переходить к индексу, а затем к таблице.

Запись в таблицу с кластеризованным индексом может быть медленнее, если есть необходимость переупорядочить данные.

1050
ответ дан 19 December 2019 в 20:19
поделиться

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

Например, у вас есть две таблицы, Customer и Order:

Customer
----------
ID
Name
Address

Order
----------
ID
CustomerID
Price

Если вы хотите быстро получить все заказы одного конкретного клиента , вы можете создать кластерный индекс в столбце «Идентификатор клиента» таблицы заказов. Таким образом, записи с одинаковым идентификатором клиента будут физически храниться рядом друг с другом на диске (в кластере), что ускоряет их извлечение.

PS Индекс на идентификаторе клиента, очевидно, не будет уникальным, поэтому вам нужно либо добавить второе поле "унифицировать" индекс или позволить базе данных делать это за вас, но это уже другая история.

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

583
ответ дан 19 December 2019 в 20:19
поделиться

Очень простым, нетехническим практическим правилом было бы то, что кластерные индексы обычно используются для вашего первичного ключа (или, по крайней мере, уникального столбца), а некластеризованные - используется для других ситуаций (возможно, внешний ключ). Действительно, SQL Server по умолчанию создает кластеризованный индекс для столбца (столбцов) первичного ключа. Как вы, наверное, уже знаете, кластеризованный индекс относится к способу физической сортировки данных на диске, что означает, что это хороший универсальный выбор для большинства ситуаций.

48
ответ дан 19 December 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: