sql >> Database >  >> RDS >> Sqlserver

SQL Index - Verschil tussen char en int

Integer / Identity-kolommen worden om een ​​aantal redenen vaak gebruikt voor primaire sleutels in databasetabellen. Kolommen met primaire sleutels moeten uniek zijn, mogen niet kunnen worden bijgewerkt en mogen eigenlijk geen betekenis hebben. Dit maakt een identiteitskolom een ​​redelijk goede keuze omdat de server de volgende waarde voor je krijgt, ze moeten uniek zijn en gehele getallen zijn relatief klein en bruikbaar (vergeleken met een GUID).

Sommige database-architecten zullen beweren dat andere gegevenstypen moeten worden gebruikt voor primaire sleutelwaarden en dat de criteria "betekenisloos" en "niet bij te werken" van beide kanten overtuigend kunnen worden beargumenteerd. Hoe dan ook, integer-/identiteitsvelden zijn best handig en veel databaseontwerpers vinden dat ze geschikte sleutelwaarden maken voor referentiële integriteit.

  1. De beste keuze voor de primaire sleutel zijn gegevenstypen met gehele getallen, aangezien gehele waarden sneller worden verwerkt dan gegevenstypen van tekens. Een karaktergegevenstype (als primaire sleutel) moet worden geconverteerd naar ASCII-equivalente waarden voordat ze worden verwerkt.
  2. Het ophalen van het record op basis van de primaire sleutel zal sneller zijn in het geval van gehele getallen als primaire sleutels, aangezien dit betekent dat er meer indexrecords op één pagina aanwezig zullen zijn. De totale zoektijd neemt dus af. Ook de joins zullen sneller zijn. Maar dit is van toepassing als uw zoekopdracht gebruik maakt van geclusterde index zoeken en niet scannen en als er slechts één tabel wordt gebruikt. In het geval van een scan die geen extra kolom heeft, betekent dit meer rijen op één gegevenspagina.

Hopelijk helpt dit je!



  1. Hoe deze twee SQL-statements te combineren?

  2. Trigger om alleen te activeren als aan een voorwaarde is voldaan in SQL Server

  3. hoe krijg ik mysql-resultaten van de datum van vandaag?

  4. Meerdere COUNT() voor meerdere voorwaarden in één query (MySQL)