Клъстериран срещу неклъстериран индекс: ключови разлики с пример

Съдържание:

Anonim

Какво е индекс?

Индексът е ключ, изграден от една или повече колони в базата данни, който ускорява извличането на редове от таблицата или изгледа. Този ключ помага на база данни като Oracle, SQL Server, MySQL и др. Да намери бързо реда, свързан със стойностите на ключовете.

Два вида индекси са:

  • Клъстериран индекс
  • Некластеризиран индекс

В този урок ще научите:

  • Какво е индекс?
  • Какво е клъстериран индекс?
  • Какво е неклъстерен индекс?
  • Характерно за клъстерирания индекс
  • Характеристики на неклъстерирани индекси
  • Пример за клъстерен индекс
  • Пример за неклъстерен индекс
  • Разлики между клъстерирания индекс и неклъстерирания индекс
  • Предимства на клъстерирания индекс
  • Предимства на неклъстерния индекс
  • Недостатъци на клъстерирания индекс
  • Недостатъци на неклъстерен индекс

Какво е клъстериран индекс?

Клъстерният индекс е вид индекс, който сортира редовете с данни в таблицата по техните ключови стойности. В базата данни има само един клъстериран индекс на таблица.

Клъстерираният индекс определя реда, в който данните се съхраняват в таблицата, които могат да бъдат сортирани само по един начин. Така че, може да има само един клъстериран индекс за всяка таблица. В RDBMS обикновено първичният ключ ви позволява да създадете клъстерен индекс въз основа на тази конкретна колона.

Какво е неклъстерен индекс?

Неклъстерен индекс съхранява данните на едно място и индекси на друго място. Индексът съдържа указатели за местоположението на тези данни. Една таблица може да има много неклъстерирани индекси, тъй като индексът в неклъстерирания индекс се съхранява на различни места.

Например, една книга може да има повече от един индекс, един в началото, който показва съдържанието на книжната единица, докато вторият индекс показва индекса на термините в азбучен ред.

Индекс без клъстериране е дефиниран в полето за неподреждане на таблицата. Този тип метод на индексиране ви помага да подобрите производителността на заявки, които използват ключове, които не са назначени като първичен ключ. Неклъстерен индекс ви позволява да добавите уникален ключ за таблица.

КЛЮЧОВА РАЗЛИКА

  • Клъстерният индекс е тип индекс, който сортира редовете с данни в таблицата по техните ключови стойности, докато неклъстерираният индекс съхранява данните на едно място и индексира на друго място.
  • Клъстерираният индекс съхранява страници с данни в листовите възли на индекса, докато неклъстерираният метод на индекса никога не съхранява страници с данни в листовите възли на индекса.
  • Индексът на клъстера не изисква допълнително дисково пространство, докато неклъстерираният индекс изисква допълнително дисково пространство.
  • Клъстерният индекс предлага по-бърз достъп до данни, от друга страна, неклъстерният индекс е по-бавен.

Характерно за клъстерирания индекс

  • Съхранение на данни по подразбиране и сортиране
  • Използвайте само една или повече колони за индекс
  • Помага ви да съхранявате данни и индекс заедно
  • Раздробяване
  • Операции
  • Клъстерно сканиране на индекс и търсене на индекс
  • Търсене на ключ

Характеристики на неклъстерирани индекси

  • Съхранявайте само ключови стойности
  • Указатели към редове на купчина / клъстериран индекс
  • Позволява вторичен достъп до данни
  • Мост към данните
  • Операции на сканиране на индекс и търсене на индекс
  • Можете да създадете некластеризиран индекс за таблица или изглед
  • Всеки индексен ред в некластеризирания индекс съхранява некластеризираната ключова стойност и локатор на редове

Пример за клъстерен индекс

В примера по-долу SalesOrderDetailID е клъстерираният индекс. Примерна заявка за извличане на данни

SELECT CarrierTrackingNumber, UnitPriceFROM SalesDataWHERE SalesOrderDetailID = 6

Пример за неклъстерен индекс

В примера по-долу се създава неклъстерен индекс за OrderQty и ProductID, както следва

CREATE INDEX myIndex ONSalesData (ProductID, OrderQty)

Следващата заявка ще бъде извлечена по-бързо в сравнение с клъстерирания индекс.

SELECT Product ID, OrderQtyFROM SalesDataWHERE ProductID = 714

Разлики между клъстерирания индекс и неклъстерирания индекс

Параметри Клъстерирани Неклъстерирани
Използвай за Можете да сортирате записите и да съхранявате клъстерирания индекс физически в паметта според поръчката. Некластеризираният индекс ви помага да създадете логически ред за редове с данни и използва указатели за физически файлове с данни.
Метод на съхранение Позволява ви да съхранявате страници с данни в листовите възли на индекса. Този метод на индексиране никога не съхранява страници с данни в листовите възли на индекса.
Размер Размерът на клъстерирания индекс е доста голям. Размерът на неклъстерирания индекс е малък в сравнение с клъстерирания индекс.
Достъп до данни По-бързо По-бавно в сравнение с клъстерирания индекс
Допълнително дисково пространство Не е задължително Изисква се за съхраняване на индекса отделно
Тип ключ По подразбиране първичните ключове на таблицата са клъстериран индекс. Може да се използва с уникални ограничения върху таблицата, която действа като композитен ключ.
Основна характеристика Клъстерираният индекс може да подобри ефективността на извличането на данни. Трябва да се създава върху колони, които се използват в обединения.

Предимства на клъстерирания индекс

Предимствата / ползите от клъстерирания индекс са:

  • Клъстерираните индекси са идеална опция за обхват или група чрез запитвания от тип max, min, count
  • При този тип индекс търсенето може да премине направо до определена точка в данните, така че да можете да продължите да четете последователно от там.
  • Клъстерираният метод на индекса използва механизъм за местоположение, за да намери записа в индекса в началото на диапазон.
  • Това е ефективен метод за търсене на диапазон, когато се иска диапазон от ключови стойности за търсене.
  • Помага ви да минимизирате прехвърлянето на страници и да увеличите максимално посещенията в кеша.

Предимства на неклъстерния индекс

Плюсовете за използване на неклъстерен индекс са:

  • Индекс без клъстериране ви помага бързо да извличате данни от таблицата на базата данни.
  • Помага ви да избегнете режийните разходи, свързани с клъстерирания индекс
  • Таблица може да има множество не-клъстерирани индекси в RDBMS. Така че, той може да се използва за създаване на повече от един индекс.

Недостатъци на клъстерирания индекс

Тук има минуси / недостатъци от използването на клъстериран индекс:

  • Много вложки в последователен ред
  • Клъстерираният индекс създава много постоянни разделения на страници, което включва страница с данни, както и страници с индекс.
  • Допълнителна работа за SQL за вмъквания, актуализации и изтривания.
  • Клъстерираният индекс отнема повече време за актуализиране на записите, когато се променят полетата в клъстерирания индекс.
  • Листовите възли най-често съдържат страници с данни в клъстерирания индекс.

Недостатъци на неклъстерен индекс

Тук има минуси / недостатъци от използването на неклъстерен индекс:

  • Некластеризираният индекс ви помага да съхранявате данни в логичен ред, но не позволява физическото сортиране на редовете с данни.
  • Процесът на търсене в неклъстерен индекс става скъпо.
  • Всеки път, когато кластеризиращият ключ се актуализира, се изисква съответна актуализация на неклъстерирания индекс, тъй като той съхранява кластеризиращия ключ.