/ / Защо бихте създали таблица с първичен ключ, но без и индекс - sql, sql-server, tsql, indexing

Защо бихте създали таблица с първичен ключ, но без и индекс - sql, sql-server, tsql, индексиране

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

Аз използвам SQL Server. Онлайн книгата каза, че SQL сървърът ще прилага клъстерен индекс към първичния ключ, когато го създаваме по подразбиране. Ако не ни харесва или по друга причина, можем да определим и неклатруван индекс на първичния ключ. Въз основа на моите познания, SQL сървърът ще прилага различен алгоритъм според различен индекс. -ключен индекс на първичния ключ?

Отговори:

3 за отговор № 1

защо не? PK е ограничение - логическа единица, докато индексът е физическа единица, която се използва само за ускоряване на заявки и не се изисква от модела / логиката на данните

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

понякога е полезно. в много, много редки и специфични случаи.


3 за отговор № 2

Това зависи от случаите на употреба.

  • Индексът струва - пространство и време за изграждане - това може да удари скоростта на вмъкване / актуализация. Може да не сте в състояние да си позволите това в случая на употреба.

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

  • Другите колони се нуждаят от индекси - хибрид на горните две например - може даизберете само да индексирате други колони. Има само един клъстер в таблицата (физическото подреждане на данните) и друг индекс, който ми е необходим. Аз съм променил ПК от клъстерирани до не клъстери по тази причина понякога.

Макар че трябва да се съглася с вас, че подозирам, че в наши дни това е по-рядко.


2 за отговор № 3

Тъй като няма изрична причина да се ограничава ПК до клъстериран индекс.

Няма друг "алгоритъм" за индекси без клъстери.
Клъстерен индекс е само подредена, така че тя не е отделен физически индекс.

Ако имате ключ, причиняващ много отрязъци, може да не искате да използвате клъстериран РК.

Помислете за таблици, оптимизирани за паметта на SQL 2014. PK е не-клъстериран хеш.