sql >> Databasteknik >  >> RDS >> Sqlserver

Är det bättre att använda en unik identifierare (GUID) eller en bigint för en identitetskolumn?

Det beror på vad du gör:

  • Om hastigheten är det primära problemet är en vanlig int är förmodligen tillräckligt stor.
  • Om du verkligen kommer att ha mer än 2 miljarder (med ett B;) ) poster, använd sedan bigint eller en sekventiell guide.
  • Om du enkelt behöver kunna synkronisera med poster som skapats på distans, använd Guid är riktigt bra.

Uppdatera
Några ytterligare (mindre uppenbara) anteckningar om guider:

  • De kan vara svåra för index, och det skär till kärnan av databasprestanda
  • Du kan använda sekventiella guider för att få tillbaka en del av indexeringsprestandan, men ge upp en del av slumpmässigheten som användes i punkt två.
  • Guider kan vara svåra att felsöka för hand (where id='xxx-xxx-xxxxx' ), men du får tillbaka en del av det också via sekventiella guider (where id='xxx-xxx' + '123' ).
  • Av samma anledning kan Guids göra ID-baserade säkerhetsattacker svårare – men inte omöjliga. (Du kan inte bara skriva 'http://example.com?userid=xxxx' och förvänta dig att få ett resultat för någon annans konto).


  1. Resurs-id #4 PHP MYSQL

  2. Hur man mappar PostgreSQL-arrayfält i Django ORM

  3. #1064 - Du har ett fel i din SQL-syntax; kontrollera manualen som motsvarar din MySQL-serverversion

  4. uppdatera kolumner med ett sekvensnummer mysql