какие правила использует SQL Server, чтобы определить, для какого столбца / колонок будет создан фантомный кластеризованный индекс?[закрыто]
-
22-10-2019 - |
Вопрос
Окончательное руководство по масштабированию SQL Server 2005:
если вы создаете некластеризованный индекс и у вас еще нет кластеризованного индекса, SQL Server создает “фантомный” кластеризованный индекс, потому что некластеризованные индексы всегда указывают на ключи кластеризованного индекса.
Какие правила использует SQL Server, чтобы определить, для какого столбца / колонок будет создан фантомный кластеризованный индекс?
Если он находится в первичном ключе этой таблицы (быстрое предположение), какие правила использует SQL Server, чтобы определить, в каком столбце / колонок будет создан фантомный кластеризованный индекс для таблицы без первичных ключей?
(вопрос, предназначенный для любой версии SQL Server 2005 и более поздних версий)
Решение
Когда вы определяете первичный ключ, SSMS по умолчанию сделает это кластерным индексом. Но если вы специально создаете таблицу без кластерного индекса, вы создаете таблицу кучи. SQL Server использует внутреннее значение для ссылки на строки, но это не ваши столбцы. Следующее может помочь:
В таблице кучи, что использует не кластерированный индекс в качестве указателя на строку?
http://msdn.microsoft.com/en-us/library/aa964133%28v=sql.90%29.aspx
Другие советы
Цитата, которую вы приводите, неверна.Возможно, вы захотите прочитать высококачественную книгу, например, книгу Кален Делани: http://www.sqlserverinternals.com/books.html