какие правила использует SQL Server, чтобы определить, для какого столбца / колонок будет создан фантомный кластеризованный индекс?[закрыто]

StackOverflow https://stackoverflow.com/questions/6800864

Вопрос

Окончательное руководство по масштабированию SQL Server 2005:

если вы создаете некластеризованный индекс и у вас еще нет кластеризованного индекса, SQL Server создает “фантомный” кластеризованный индекс, потому что некластеризованные индексы всегда указывают на ключи кластеризованного индекса.

  1. Какие правила использует SQL Server, чтобы определить, для какого столбца / колонок будет создан фантомный кластеризованный индекс?

  2. Если он находится в первичном ключе этой таблицы (быстрое предположение), какие правила использует SQL Server, чтобы определить, в каком столбце / колонок будет создан фантомный кластеризованный индекс для таблицы без первичных ключей?

(вопрос, предназначенный для любой версии SQL Server 2005 и более поздних версий)

Это было полезно?

Решение

Когда вы определяете первичный ключ, SSMS по умолчанию сделает это кластерным индексом. Но если вы специально создаете таблицу без кластерного индекса, вы создаете таблицу кучи. SQL Server использует внутреннее значение для ссылки на строки, но это не ваши столбцы. Следующее может помочь:

В таблице кучи, что использует не кластерированный индекс в качестве указателя на строку?

http://msdn.microsoft.com/en-us/library/aa964133%28v=sql.90%29.aspx

http://www.mssqltips.com/tip.asp?tip=1254

Другие советы

Цитата, которую вы приводите, неверна.Возможно, вы захотите прочитать высококачественную книгу, например, книгу Кален Делани: http://www.sqlserverinternals.com/books.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top