Идентификация Asp.net: почему индекс находится на GUID (nvarchar)? Любая выгода / недостаток использования Int? - PullRequest
0 голосов
/ 27 января 2019

Когда я генерирую MVC.NET с использованием Visual Studio 2017, он генерирует несколько таблиц AspNetUsers, AspNetRoles и т. Д. *

Если вы посмотрите на сгенерированные Id s, все они находятся в nvarchar (128), а значение равно GUID.

Моя немедленная реакция - изменить его на int, но я подумал, что у Microsoft должна быть очень веская причина использовать GUID вместо int. Но, выполнив поиск в Google, я не смог найти ответ.

Теперь я понимаю, почему он хранит все идентификаторы как nvarchar (128), потому что не вся база данных имеет тип поля GUID. Но я не смог выяснить преимущества использования GUID и int.

Дальнейший поиск в Интернете, я нашел эту статью: GUIDs как ПЕРВИЧНЫЕ КЛЮЧИ и / или ключ кластеризации . Похоже, что GUID может быть плохим выбором.

Я на начальном этапе, поэтому мне еще пора перейти от GUID к int. Но есть ли реальный недостаток (и / или выгода) при использовании int вместо GUID?

Спасибо за любую помощь ...

1 Ответ

0 голосов
/ 27 января 2019

В интернете уже много обсуждалось по этому вопросу.Это действительно бесконечная дискуссия / тема, так как int/long и GUID, поскольку первичный ключ имеет свои плюсы и минусы.

GUID vs INT Debate - фантастическая статья на эту тему.

Вы также можете взглянуть на Почему ASP.NET Identity 2.0 использует GUID / строку в качестве идентификатора пользователя?

Помимо обсуждения этих статей я могу предложить вам несколько вещей:

  1. По умолчанию основной компонент SQL Server является ключом кластеризации, если вы не указали этого,что приведет к плохой производительности в случае GUID первичного ключа.Если вы принимаете это во внимание, то не выбирайте GUID в качестве первичного ключа.

  2. Если вы считаете, что ваш первичный ключ не имеет особого значения, не будучи уникальным идентификатором, выберите GUIDв качестве первичного ключа.

  3. Если вам нужен значимый и читаемый первичный ключ, выберите int/long в качестве первичного ключа.

Если вы выберете GUID в качестве основного, тогда вы можете взглянуть на Каковы наилучшие методы использования GUID в качестве первичного ключа, особенно в отношении производительности?

...