czy warto przełączać KLUCZ PIERWOTNY z typu NVARCHAR na typ INT?

W naszej bazie danych SQL SERVER 2008 R2 mamyCOUNTRIES tabela referencyjna zawierająca kraje. ThePRIMARY KEY jest kolumną nvarchar:

create table COUNTRIES(
   COUNTRY_ID nvarchar(50) PRIMARY KEY,
   ... other columns
)

Klucz podstawowy zawiera wartości takie jak „FR”, „GER”, „US”, „UK” itp. Ta tabela zawiera max. 20 rzędów.

Mamy teżSALES tabela zawierająca dane sprzedaży:

create table SALES(
    ID int PRIMARY KEY
    COUNTRY_ID nvarchar(50),
    PRODUCT_ID int,
    DATE datetime,
    UNITS decimal(18,2)        
    ... other columns
)

Ta tabela sprzedaży zawiera kolumnę o nazwieCOUNTRY_ID, także typunvarchar (nie klucz podstawowy). Ta tabela jest znacznie większa i zawiera około 20 milionów wierszy.

Wewnątrz naszej aplikacji, podczas kwerendy naSALES tabela, filtrujemy prawie za każdym razemCOUNTRY_ID. Nawet w takim przypadku wykonanie większości zapytań o agregację zajmuje zbyt dużo czasu (nawet przy odpowiednich indeksach)

Jesteśmy w fazie rozwoju, aby poprawić wydajność zapytań na stronieSALES stół. Moje pytanie brzmi:

Czy warto przełączaćCOUNTRY_ID wpisz odnvarchar(50) do typuint? Jeśli kolumnaCOUNTRY_ID jest konwertowany w obu tabelach na typint, czy mogę oczekiwać lepszej wydajności przy dołączaniu do dwóch stołów?

questionAnswers(1)

yourAnswerToTheQuestion