Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

По-добре ли е да използвате уникален идентификатор (GUID) или bigint за колона за идентичност?

Това зависи от това какво правите:

  • Ако скоростта е основната грижа, тогава обикновен стар int вероятно е достатъчно голям.
  • Ако наистина ще имате повече от 2 милиарда (с B;) ) записа, тогава използвайте bigint или последователно ръководство.
  • Ако трябва да можете лесно да синхронизирате със записи, създадени от разстояние, тогава Guid е наистина страхотно.

Актуализация
Някои допълнителни (по-малко очевидни) бележки относно ръководствата:

  • Те могат да бъдат трудни за индексите и това се отразява в основата на производителността на базата данни
  • Можете да използвате последователни ръководства, за да върнете част от производителността на индексирането, но се откажете от част от произволността, използвана в точка втора.
  • Ръководствата могат да бъдат трудни за отстраняване на грешки на ръка (where id='xxx-xxx-xxxxx' ), но получавате част от това обратно и чрез последователни ръководства (where id='xxx-xxx' + '123' ).
  • По същата причина Guids могат да направят базираните на ID атаки за сигурност по-трудни, но не и невъзможни. (Не можете просто да въведете 'http://example.com?userid=xxxx' и очаквайте да получите резултат за нечий друг акаунт).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ExecutenonQuery не работи

  2. Избиране на COUNT(*) с DISTINCT

  3. Как да изпълним dtsx пакети чрез командния ред

  4. Как да създадете таблица в SQL Server с помощта на заявка

  5. 3 начина да получите стъпките за работа на работа за агент на SQL Server (T-SQL)