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 konvertiertintkann ich eine bessere Leistung erwarten, wenn ich die beiden Tabellen verbinde?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage