Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Клъстер срещу не-клъстер

Разликата между клъстериран и неклъстъриран индекс е, че клъстерираният индекс определя физическия ред на редовете в базата данни . С други думи, прилагане на групирания индекс към PersonId означава, че редовете ще бъдат физически сортирани по PersonId в таблицата, позволявайки търсене на индекс върху това да отиде направо до реда (вместо негрупиран индекс, който би ви насочи към местоположението на реда, добавяйки допълнителна стъпка).

Въпреки това е необичайно за първичния ключ да не бъде клъстерният индекс, но не и нечувано. Проблемът с вашия сценарий всъщност е точно обратното на това, което предполагате:искате уникален стойности в клъстериран индекс, а не дубликати. Тъй като клъстерираният индекс определя физическия ред на реда, ако индексът е върху неуникална колона, тогава сървърът трябва да добави фонова стойност към редове, които имат дублирана стойност на ключ (във вашия случай всички редове с една и съща PersonId ), така че комбинираната стойност (ключ + фонова стойност) да е уникална.

Единственото нещо, което бих предложил е не с помощта на сурогатен ключ (вашият CourtOrderId ) като първичен ключ, но вместо това използвайте съставен първичен ключ на PersonId и някаква друга уникално идентифицираща колона или набор от колони. Ако обаче това не е възможно (или не е практично), тогава поставете клъстерирания индекс на CourtOrderId .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Създайте връзка

  2. SQL ефективен начин за присъединяване към таблица, където съществуват всички стойности

  3. Как да активирате всички ограничения за проверка и външни ключове за таблица в SQL Server (примери за T-SQL)

  4. Как да коригирате „Свързаната функция за дял генерира повече дялове, отколкото има файлови групи, споменати в схемата“ Msg 7707 в SQL Server

  5. Вземете текущата часова зона на сървъра в SQL Server (T-SQL)