Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 як основний ключ. Той час якВикористання інтелекту дасть вам найкращу продуктивність


Коментар: ВикористанняПродуктивність впорядкованого GUID значно покращується

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

Тотожність — це цілий тип типу, десяткова без визначення, bigint прийнятний

Гід є фіксованим двійковим(16), який має 16 байт

Ідентичність збільшується (або віднімається), а guid є випадковим, тому при вставці даних,Перший не створює фрагментів, а другий — і оскільки другий не в порядку, порядок потрібно коригувати при вставці, тому перший зазвичай кращий за другий за продуктивністю.

Велика кількість інформації зазвичай поділяється на таблиці, тому ідентичність у багатьох випадках все ще більш доречна

Щодо значення первинного ключа, це залежить від того, як ви його розглядаєте при проєктуванні, для самої обробки даних первинний ключ не повинен бути змістовним, а якщо ви хочете, щоб первинний ключ містив бізнес-значення, то первинний ключ ідентичності, звісно, не має значення, але загалом краще розділяти бізнес-значення та обробку даних, бізнес постійно змінюється, якщо ви хочете перенести значення в основний ключ дизайну таблиці, тоді бізнес змінюється, вам доведеться більше коригувати структуру таблиці.

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

1. У системах, які часто потребують міграції даних, рекомендується використовувати Guid. А додавання некластеризованих індексів до відповідних полів зовнішніх ключів, тобто полів, що використовуються для запитів на об'єднання, дуже корисне для підвищення продуктивності. Поле умови where також можна додавати для некластеризованих індексів.

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

3. Для систем, які не потребують міграції, або для невеликих систем, дуже зручно використовувати int як первинний ключ, і є певне підвищення ефективності.

(Кінець)




Попередній:ASP.NET Ядро (20) Запобігання відкритим перенаправленням
Наступний:Багатомовні ресурси для читання та запису (.resx) для .NET Core програми
 Орендодавець| Опубліковано 06.06.2023 22:42:46 |
SequentialGuidValueGenerator генерує послідовні значення Guid, оптимізовані для використання з кластерними ключами або індексами 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