стоит ли переключать ПЕРВИЧНЫЙ КЛЮЧ с типа NVARCHAR на тип INT?

В нашей базе данных SQL SERVER 2008 R2 у нас естьCOUNTRIES справочная таблица, которая содержит страны.PRIMARY KEY это столбец nvarchar:

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

Первичный ключ содержит значения, такие как «FR», «GER», «US», «UK» и т. Д. Эта таблица содержит макс. 20 рядов.

У нас также естьSALES таблица с данными о продажах:

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

Эта таблица продаж содержит столбец с именемCOUNTRY_IDтакже типаnvarchar (не первичный ключ). Эта таблица намного больше и содержит около 20 миллионов строк.

В нашем приложении при запросеSALES таблицы, мы фильтруем почти каждый раз наCOUNTRY_ID, Даже в этом случае выполнение большинства запросов агрегации занимает слишком много времени (даже при наличии соответствующих индексов).

Мы находимся в стадии разработки, чтобы улучшить производительность запросов наSALES Таблица. Мой вопрос:

Стоит ли переключатьCOUNTRY_ID введите отnvarchar(50) к типуint? Если столбецCOUNTRY_ID преобразуется в обеих таблицах в типintМожно ли ожидать более высокую производительность при соединении двух таблиц?

Ответы на вопрос(1)

Ваш ответ на вопрос