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

Вид: 17091|Ответ: 3

[Источник] Используйте guid в качестве основного ключа и int как основное сравнение производительности

[Скопировать ссылку]
Опубликовано 09.10.2019 16:48:35 | | | |
При проектировании базы данных мы часто используем guid или int в качестве основного ключа, и согласно полученным знаниям, мы всегда считали, что int эффективнее как основной ключ, но это невозможно без тщательного тестирования

Объясните причину. Сегодня во время оптимизации базы данных я столкнулся с этой проблемой, поэтому провёл тест.

Среда тестирования:

Настольный ПК Pentiun(R) 4 процессора 3.06 ГГц
Win XP professional
1,5G DDR RAM
SQL Server 2005 Personal  


Процесс тестирования:

Сначала создайте тестовую базу данных, Test

Результаты теста следующие:



Как уже упоминалось, эффективность использования int в качестве первичного ключа выше по сравнению с использованием guid в качестве основного ключа, особенно при запросе соединения и удалении записей.

Более того, в сегодняшнем запросе по данным с основным ключом в GUID тайм-аут повторялся из-за вложения нескольких результатов подзапроса. Поэтому я выступаю за использование int в качестве основного ключа и не согласен с guid как основной ключ.
Вышеуказанные взгляды отражают личные мнения, и каждый может высказать своё мнение и объяснить преимущества и недостатки guid и int как основного ключа.

Последующие тесты:


После напоминания братьев сегодня к двум подтаблицам был добавлен некластерный индекс:

СОЗДАТЬ НЕКЛАСТЕРНЫЕ ИНДЕКСНЫЕ Index_Detail_Guid на Test_Guid_Detail(Guid)
СОЗДАТЬ НЕКЛАСТЕРНЫЙ ИНДЕКСНЫЙ Index_Detail_id НА Test_Int_Detail(id)
Затем я провёл внутренний запрос по соединению и обнаружил, что, как сказал @Xu Шаося, эффективность действительно недостаточно очевидна, чтобы показывать более 50%, и фактически только около 23%, что всё равно приемлемо.

Поэтому рекомендуется

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

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

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





Предыдущий:A182 У Сяобо «Новая белая книга для среднего класса 2019»
Следующий:Сборник последних материалов Клуба чтения Фань Дэн
 Хозяин| Опубликовано 08.02.2021 11:03:12 |
тест
 Хозяин| Опубликовано 08.02.2021 11:03:31 |

Опубликовано 20.03.2025 16:13:51 |
Миграция первичного ключа INT не является большой проблемой, если первичный ключ INT временно отменяется во время миграции, а затем открывается самоинкремент после миграции
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com