sql >> Database >  >> RDS >> Sqlserver

numeriek(38,0) als primaire sleutelkolom; goed, slecht, wat maakt het uit?

Nou, jij bent meer data uitgeven om nummers op te slaan die u nooit echt zult bereiken.

bigint stijgt tot 9.223.372.036.854.775.807 in 8 bytes

int gaat tot 2.147.483.647 in 4 bytes

Een NUMERIEK(38,0) kost, als ik het goed doe, 17 bytes.

Geen enorm verschil, maar:kleinere datatypes =meer rijen in het geheugen (of minder pagina's voor hetzelfde # rijen) =minder schijf-I/O om zoekopdrachten uit te voeren (ofwel geïndexeerd ofwel gegevenspagina's zoeken). Hetzelfde geldt voor replicatie, logpagina's, enz.

Voor SQL Server:INT is een IEEE-standaard en is dus gemakkelijker te vergelijken voor de CPU, dus u krijgt een lichte prestatieverbetering door INT te gebruiken versus NUMERIC (wat een verpakt decimaal formaat is). (Opmerking in Oracle, als de huidige versie overeenkomt met de oudere versies waarmee ik ben opgegroeid, ALLE datatypes zijn verpakt, dus een INT binnenin is vrijwel hetzelfde als een NUMERIEKE(x,0) dus er is geen prestatieverschil)

Dus in het grote geheel -- als je veel schijf, RAM en vrije I/O hebt, gebruik dan welk datatype je maar wilt. Als je wat meer prestaties wilt, wees dan wat conservatiever.

Anders zou ik het op dit moment laten zoals het is. Het is niet nodig om dingen te veranderen.



  1. Hoe gegevens uit een SAP ABAP-systeem halen?

  2. Selecteer subquery die meerdere rijen retourneert als tekenreeks (één kolom) in tabel (Oracle SQL)

  3. sql-query om de records van de komende 30 dagen op te halen

  4. Hoe alle tabelvoorvoegsels in een enkele query te wijzigen