Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Index - Unterschied zwischen char und int

Ganzzahl-/Identitätsspalten werden aus verschiedenen Gründen häufig für Primärschlüssel in Datenbanktabellen verwendet. Primärschlüsselspalten müssen eindeutig sein, sollten nicht aktualisierbar sein und sollten wirklich bedeutungslos sein. Dies macht eine Identitätsspalte zu einer ziemlich guten Wahl, da der Server den nächsten Wert für Sie erhält, sie eindeutig sein müssen und ganze Zahlen relativ klein und verwendbar sind (im Vergleich zu einer GUID).

Einige Datenbankarchitekten werden argumentieren, dass andere Datentypen für Primärschlüsselwerte verwendet werden sollten, und die Kriterien "bedeutungslos" und "nicht aktualisierbar" können auf beiden Seiten überzeugend argumentiert werden. Ungeachtet dessen sind Integer-/Identitätsfelder ziemlich praktisch und viele Datenbankdesigner finden, dass sie geeignete Schlüsselwerte für die referentielle Integrität erstellen.

  1. Die beste Wahl für Primärschlüssel sind Integer-Datentypen, da Integer-Werte schneller verarbeitet werden als Zeichen-Datentyp-Werte. Ein Zeichendatentyp (als Primärschlüssel) muss vor der Verarbeitung in ASCII-äquivalente Werte konvertiert werden.
  2. Das Abrufen des Datensatzes auf der Grundlage des Primärschlüssels wird im Fall von Ganzzahlen als Primärschlüssel schneller sein, da dies bedeutet, dass mehr Indexdatensätze auf einer einzelnen Seite vorhanden sind. Die Gesamtsuchzeit verringert sich also. Auch die Verknüpfungen werden schneller sein. Dies gilt jedoch, wenn Ihre Abfrage die Cluster-Index-Suche und keine Suche verwendet und wenn nur eine Tabelle verwendet wird. Im Falle eines Scans ohne zusätzliche Spalte bedeutet dies mehr Zeilen auf einer Datenseite.

Hoffentlich hilft Ihnen das weiter!