Lohnt es sich, einen PRIMARY KEY vom Typ NVARCHAR auf den Typ INT umzustellen?
Auf unserer SQL Server 2008 R2-Datenbank haben wir eineCOUNTRIES
Referenztabelle, die Länder enthält. DasPRIMARY KEY
ist eine nvarchar-Spalte:
create table COUNTRIES(
COUNTRY_ID nvarchar(50) PRIMARY KEY,
... other columns
)
Der Primärschlüssel enthält Werte wie 'FR', 'GER', 'US', 'UK' usw. Diese Tabelle enthält max. 20 Reihen.
Wir haben auch eineSALES
Tabelle mit Verkaufsdaten:
create table SALES(
ID int PRIMARY KEY
COUNTRY_ID nvarchar(50),
PRODUCT_ID int,
DATE datetime,
UNITS decimal(18,2)
... other columns
)
Diese Verkaufstabelle enthält eine Spalte mit dem NamenCOUNTRY_ID
, auch vom Typnvarchar
(kein Primärschlüssel). Diese Tabelle ist viel größer und enthält etwa 20 Millionen Zeilen.
Innerhalb unserer App bei der Abfrage auf dieSALES
wir filtern fast jedes mal nach dem tischCOUNTRY_ID
. Trotzdem dauert es zu lange, um die meisten Aggregationsabfragen durchzuführen (auch wenn die richtigen Indizes vorhanden sind).
Wir befinden uns in einer Entwicklungsphase, um die Abfrageleistung auf der Website zu verbessernSALES
Tabelle. Meine Frage ist:
Lohnt es sich das zu wechseln?COUNTRY_ID
Typ vonnvarchar(50)
zum Typint
? Ist die SpalteCOUNTRY_ID
wird in beiden Tabellen in den Typ konvertiertint
kann ich eine bessere Leistung erwarten, wenn ich die beiden Tabellen verbinde?