стоит ли переключать ПЕРВИЧНЫЙ КЛЮЧ с типа 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
Можно ли ожидать более высокую производительность при соединении двух таблиц?