Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3812|Ответ: 2

[Источник] [Turn] (MSSQL) SQL Server база данных int и guid для сравнения первичных ключей

[Скопировать ссылку]
Опубликовано 06.06.2023 22:17:40 | | |
Требования: Во время недавнего собеседования меня спросили, в чём разница между SQL Server database int и guid как основным ключом.У обоих есть свои плюсы и минусы, пожалуйста, взвесьте их с учётом ваших реальных бизнес-сценариев

Оригинальный текст 1Вход по гиперссылке виден.

Преимущества использования INT в качестве основного ключа:

1. Требуется небольшое пространство для хранения данных, всего 4 байта.

2. Производительность использования INT для операций вставки и обновления лучше, чем у GUID, поэтому использование int повышает производительность приложения.

3. Операции индексирования и объединения, int обеспечивает лучшую производительность.

4. Легко запоминать.

5. Поддержка получения последнего значения через функцию, например: Scope_Indentity().

Недостатки использования INT в качестве первичного ключа

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

2. Существуют ограничения на область использования данных INT. Если объём данных большой, он может превышать диапазон значений INT.

3. Сложно обрабатывать распределённые хранимые таблицы данных.

Преимущества использования GUID в качестве основного ключа:

1. Это уникально.

2. Существует мало возможностей для дублирования.

3. Подходит для операций вставки и обновления больших объёмов данных.

4. Объединение данных между серверами очень удобно.

Недостатки использования GUID в качестве основного ключа:

1. Объём памяти большой (16 байт), поэтому он занимает больше размера диска.

2. Это трудно вспомнить. Производительность операции объединения ниже, чем у int.

3. Нет встроенной функции для получения последнего сгенерированного первичного ключа GUID.

4. GUID в качестве первичного ключа будет добавлен к другим индексам таблицы, что снизит производительность.

Сводка:

Выше перечислены преимущества и недостатки типов данных GUID и INT как первичных ключей. Думаю, для больших объёмов данных рекомендуется использовать guid в качестве основного ключа. тогда какИспользование интеллекта даст наилучшую производительность


Комментарий: ИспользоватьПроизводительность упорядоченных интерфейсов значительно улучшается

Оригинальный текст дваВход по гиперссылке виден.

Тождественность — это целый тип типа, десятичный без определения десятичной, бигинт допустим

Гид фиксированный двоичный (16), который составляет 16 байт

Идентичность увеличивается (или вычитается), а guid — случайным, поэтому при вставке данныхПервый не производит фрагментов, а второй — и поскольку второй не в порядке, порядок должен быть скорректирован при вставке, поэтому первый обычно лучше второго по производительности.

Большое количество информации обычно делится по таблицам, поэтому идентичность во многих случаях всё ещё более подходяща

Что касается значения первичного ключа, это зависит от того, как вы рассматриваете его при проектировании: для самой обработки данных первичный ключ не обязан быть значимым, а если вам нужно, чтобы первичный ключ содержал бизнес-значение, то первичный ключ идентичности, конечно, не имеет значения, но в целом лучше разделять бизнес-смысл и обработку данных, бизнес постоянно меняется, если вы хотите перенести значение в основной ключ дизайна таблицы, тогда бизнес меняется, вам придётся больше корректировать структуру таблицы.

Оригинальный текст триВход по гиперссылке виден.

1. В системах, где часто требуется миграция данных, рекомендуется использовать Guid. Добавление некластерных индексов к соответствующим полям внешних ключей, то есть в поля, используемые для запросов к объединению, значительно помогает повысить производительность. Поле условия где также может быть добавлено по мере необходимости для некластерных индексов.

2. При использовании типа Guid в качестве основного ключа тип данных должен быть уникальным идентификатором и обязательно запоминать егоОтменить первичный ключ "Агрегированные индексы

3. Для систем, которые не требуют миграции, или для небольших систем, всё равно очень удобно использовать int в качестве первичного ключа, и есть определённое повышение эффективности.

(Конец)




Предыдущий:ASP.NET Core (20) Предотвращение открытых перенаправленных атак
Следующий:Многоязычные файлы ресурсов чтения и записи (.resx) для .NET Core программы
 Хозяин| Опубликовано 06.06.2023 22:42:46 |
SequentialGuidValueGenerator генерирует последовательные значения Gid, оптимизированные для использования с ключами или индексами кластера Microsoft SQL Server, что обеспечивает лучшую производительность по сравнению с случайными значениями. Это генератор по умолчанию для генерации столбцов SQL Server Guid при их добавлении.

Вход по гиперссылке виден.


Последовательные GUID в Entity Framework Core могут не быть последовательными

Вход по гиперссылке виден.
 Хозяин| Опубликовано 27.01.2024 11:07:29 |
[MSSQL] SQL SERVER упорядочили GUID и неупорядоченные GUID в качестве первичных тестов индекса агрегации ключей
https://www.itsvse.com/thread-10607-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com