Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy lepiej jest użyć unikatowego identyfikatora (GUID) lub bigint dla kolumny tożsamości?

To zależy od tego, co robisz:

  • Jeśli szybkość jest najważniejsza, to zwykły stary int jest prawdopodobnie wystarczająco duży.
  • Jeśli naprawdę będziesz miał więcej niż 2 miliardy (z literą B;) ) rekordów, użyj bigint lub sekwencyjny przewodnik.
  • Jeśli chcesz mieć możliwość łatwej synchronizacji z rekordami utworzonymi zdalnie, wtedy Guid jest naprawdę świetny.

Aktualizacja
Niektóre dodatkowe (mniej oczywiste) uwagi dotyczące przewodników:

  • Mogą być trudne dla indeksów, a to ogranicza wydajność bazy danych
  • Możesz użyć sekwencyjnych guidów, aby odzyskać część wydajności indeksowania, ale zrezygnuj z losowości użytej w punkcie drugim.
  • Ręczne debugowanie guidów może być trudne (where id='xxx-xxx-xxxxx' ), ale część z nich można odzyskać również za pomocą sekwencyjnych guidów (where id='xxx-xxx' + '123' ).
  • Z tego samego powodu Guidy mogą utrudnić ataki na zabezpieczenia oparte na identyfikatorach, ale nie uniemożliwić ich. (Nie możesz po prostu wpisać 'http://example.com?userid=xxxx' i spodziewać się wyniku dla cudzego konta).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zapętlić i przeanalizować parametr xml w procedurze składowanej serwera sql?

  2. set @var =exec przechowywana_procedura

  3. Czy możesz mieć logikę „jeśli-to-inaczej” w SQL?

  4. Dodaj tożsamości puli aplikacji IIS 7 jako loginy SQL Server

  5. Kroczące odchylenie standardowe w SQL Server