Я разрабатываю веб-сайт ASP.NET в Visual Studio 2010 (с пакетом обновления 1, большое спасибо много). Я хочу использовать встроенные в .NET поставщики членства и ролей для SQL Server 2008.
Я уже очень давно занимаюсь разработкой технологий Microsoft и потирался локтями с некоторыми из лучших администраторов баз данных SQL Server в мире. бизнес. Каждый из них сказал мне держаться подальше от GUIDS в качестве первичных ключей при создании таблицы базы данных, которая будет:
Причина: поскольку первичный ключ является кластеризованным индексом!
Это в основном означает, что каждый запись, вставленная в таблицу , должна подчиняться ограничениям индекса. Поэтому, если индекс отсортирован ASC, запись с вновь созданным GUID должна быть физически вставлена в нужной последовательности в соответствующую таблицу данных.
Это было бы хорошо для таблицы с несколькими тысячами записей. или так. SQL Server нужно будет переместить только несколько. Однако, если таблица данных содержит несколько миллионов записей и обнаруживает, что она должна вставить новую запись в строку 216., это может занять значительное время (по веб-стандартам). Он должен физически переместить все эти строки вниз, чтобы вставить новую.
Итак, мой вопрос сводится к следующему. Поскольку Microsoft и все DBS, которые мы знаем и любим, сказали НЕТ GUID в качестве первичных ключей ... почему инструмент ASPNET_REGSQL создает таблицы, используя GUID в качестве первичного ключа?
Или я что-то упускаю? Есть ли в ядре SQL Profiler новая функция, которая больше не рассматривает GUIDS как задачу?