Разлика между Clustered и неклъстерен индекс
Ключова разлика между Clustered и неклъстерен индекс
- Клъстерният индекс е тип индекс, който сортира редовете с данни в таблицата по техните ключови стойности, докато неклъстерният индекс съхранява данните на едно място, а индексите - на друго място.
- Clustered index съхранява страници с данни в листовите възли на индекса, докато методът на неклъстерен индекс никога не съхранява страници с данни в листовите възли на индекса.
- Клъстерният индекс не изисква допълнително дисково пространство, докато неклъстерният индекс изисква допълнително дисково пространство.
- Cluster index предлага по-бърз достъп до данни, от друга страна, Non-clustered index е по-бавен.

Какво е индекс?
Индексът е ключ, изграден от една или повече колони в базата данни, който ускорява извличането на редове от таблицата или изгледа. Този ключ помага на харесване на база данни Oracle, SQL сървър, MySQLи т.н., за да намерите бързо реда, свързан с ключови стойности.
Два вида индекси са:
- Clusterизд Индекс
- не-Clusterизд Индекс
Какво е Clusterизд индекс?
Cluster index е тип индекс, който сортира редовете с данни в таблицата по техните ключови стойности. В базата данни има само един клъстерен индекс на таблица.
Клъстърираният индекс определя реда, в който данните се съхраняват в таблицата, която може да бъде сортирана само по един начин. Така че може да има само един клъстерен индекс за всяка таблица. В RDBMS обикновено първичният ключ ви позволява да създадете клъстерен индекс въз основа на тази конкретна колона.
Какво е неклъстъриран индекс?
Неклъстърният индекс съхранява данните на едно място, а индексите - на друго място. Индексът съдържа указатели към местоположението на тези данни. Една таблица може да има много неклъстерирани индекси, тъй като индекс в неклъстерирания индекс се съхранява на различни места.
Например една книга може да има повече от един индекс, един в началото, който показва съдържанието на книжната единица, докато вторият индекс показва индекса на термините по азбучен ред.
Индекс без групиране е дефиниран в полето за неподреждане на таблицата. Този тип метод на индексиране ви помага да подобрите производителността на заявки, които използват ключове, които не са присвоени като първичен ключ. Неклъстъриран индекс ви позволява да добавите уникален ключ за таблица.
Характерно за Clusterизд Индекс
- Стандартно и сортирано съхранение на данни
- Използвайте само една или повече от една колона за индекс
- Помага ви да съхранявате данни и индекс заедно
- Раздробяване
- Operaции
- Clusterсканиране на индекс и търсене на индекс
- Търсене на ключ
Характеристики на неклъстърни индекси
- Съхранявайте само ключови стойности
- Указатели към купчина/Clusterизд Индексни редове
- Позволява достъп до вторични данни
- Мост към данните
- Operaфункции на сканиране на индекс и търсене на индекс
- Можете да създадете неклъстъриран индекс за таблица или изглед
- Всеки индексен ред в неклъстерирания индекс съхранява стойността на неклъстерирания ключ и локатор на ред
Clustered срещу неклъстъриран индекс в SQL: Ключови разлики
параметри | Clustered | Негрупиран |
---|---|---|
Използвай за | Можете да сортирате записите и да съхранявате клъстерен индекс физически в паметта според реда. | Неклъстъриран индекс ви помага да създадете логически ред за редове с данни и да използва указатели за физически файлове с данни. |
Метод на съхранение | Позволява ви да съхранявате страници с данни в листовите възли на индекса. | Този метод на индексиране никога не съхранява страници с данни в листовите възли на индекса. |
Размер | Размерът на групирания индекс е доста голям. | Размерът на неклъстерирания индекс е малък в сравнение с клъстерирания индекс. |
Достъп до данни | По-бързо | По-бавен в сравнение с клъстерирания индекс |
Допълнително дисково пространство | Не е задължително | Изисква се отделно съхраняване на индекса |
Тип ключ | По подразбиране първичните ключове на таблицата са a Clusterизд Индекс. | Може да се използва с уникално ограничение върху таблицата, която действа като съставен ключ. |
Главна особеност | Клъстърираният индекс може да подобри производителността на извличането на данни. | Трябва да се създаде върху колони, които се използват в съединения. |
Пример за групиран индекс
В примера по-долу SalesOrderDetailID е клъстерният индекс. Примерна заявка за извличане на данни
SELECT CarrierTrackingNumber, UnitPrice FROM SalesData WHERE SalesOrderDetailID = 6
Пример за неклъстъриран индекс
В примера по-долу се създава негрупиран индекс върху OrderQty и ProductID, както следва
CREATE INDEX myIndex ON SalesData (ProductID, OrderQty)
Следната заявка ще бъде извлечена по-бързо в сравнение с клъстерирания индекс.
SELECT Product ID, OrderQty FROM SalesData WHERE ProductID = 714
Предимства на Clusterизд Индекс
Плюсовете/ползите на клъстерирания индекс са:
- Clustered индексите са идеална опция за обхват или групиране по със запитвания тип max, min, count
- В този тип индекс търсенето може да отиде направо до конкретна точка в данните, така че да можете да продължите да четете последователно оттам.
- Clusterметодът на ed index използва механизъм за местоположение, за да намери запис в индекса в началото на диапазон.
- Това е ефективен метод за търсене в диапазон, когато се изисква диапазон от стойности на ключ за търсене.
- Помага ви да минимизирате прехвърлянията на страници и да увеличите максимално посещенията в кеша.
Предимства на неклъстериран индекс
Плюсовете на използването на неклъстъриран индекс са:
- Индексът без групиране ви помага бързо да извличате данни от таблицата на базата данни.
- Помага ви да избегнете режийните разходи, свързани с клъстерирания индекс
- Една таблица може да има множество неклъстерирани индекси RDBMS. Така че може да се използва за създаване на повече от един индекс.
Недостатъци на Clusterизд Индекс
Ето минуси/недостатъци на използването на клъстерен индекс:
- Много вмъквания в непоследователен ред
- Клъстърираният индекс създава много постоянни разделяния на страници, което включва страница с данни, както и страници с индекс.
- Допълнителна работа за SQL за вмъквания, актуализации и изтривания.
- Клъстерираният индекс отнема повече време за актуализиране на записите, когато полетата в клъстерирания индекс се променят.
- Листовите възли съдържат предимно страници с данни в клъстерирания индекс.
Недостатъци на неклъстърния индекс
Ето минусите/недостатъците на използването на неклъстъриран индекс:
- Неклъстърният индекс ви помага да съхранявате данни в логически ред, но не позволява да сортирате физически редове с данни.
- Процесът на търсене на неклъстъриран индекс става скъп.
- Всеки път, когато ключът за клъстериране се актуализира, се изисква съответна актуализация на неклъстерирания индекс, тъй като той съхранява ключа за клъстериране.