Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 17091|Отговор: 3

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

[Копирай линк]
Публикувано в 9.10.2019 г. 16:48:35 ч. | | | |
При проектирането на базата данни често използваме guid или int като основен ключ, и според придобитите знания винаги сме смятали, че int е по-ефективен като основен ключ, но е невъзможно без внимателно тестване

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

Тестова среда:

Настолен компютър Pentiun(R) 4 CPU 3.06GHz
Win XP professional
1.5G DDR RAM
SQL Server 2005 Личен  


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

Първо, създайте тестова база данни, 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. А добавянето на неклъстерни индекси към съответните външни ключови полета, тоест полета, използвани за заявки за съединяване, е от голяма полза за подобряване на производителността. Полето на условието where може да се добави и при подходящо за неклъстерирани индекси.

2. При използване на Guid тип като първичен ключ, типът данни трябва да бъде уникален идентификатор и не забравяйте да анулирате "агрегатния индекс" на първичния ключ

3. За системи, които не се нуждаят от миграция, или за малки системи, все още е много удобно да се използва int като първичен ключ и има известно подобрение в ефективността.





Предишен:A182 У Сяобо "Нова бяла книга за средната класа 2019"
Следващ:Колекция от най-новите ресурси на Клуба за четене Фан Дън
 Хазяин| Публикувано в 8.02.2021 г. 11:03:12 ч. |
тест
 Хазяин| Публикувано в 8.02.2021 г. 11:03:31 ч. |

Публикувано в 20.03.2025 г. 16:13:51 ч. |
Миграцията на INT първичен ключ не е голям проблем, стига INT първичният ключ временно да бъде отменен по време на миграцията и след това да се отвори самоинкрементът след миграцията
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com