在我们的 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
(不是主键)。这个表要大得多,包含大约 2000 万行。
在我们的应用程序中,当查询SALES
表时,我们几乎每次都在COUNTRY_ID
. 即使这样,执行大多数聚合查询也需要很长时间(即使有适当的索引)
我们正处于改进SALES
表查询性能的开发阶段。我的问题是:
是否值得将COUNTRY_ID
类型从类型切换nvarchar(50)
到类型int
?如果两个表中的列COUNTRY_ID
都转换为 type int
,在加入两个表时我可以期待更好的性能吗?