gpt4 book ai didi

sql - 是否值得将主键从 NVARCHAR 类型切换到 INT 类型?

转载 作者:行者123 更新时间:2023-12-03 02:45:12 26 4
gpt4 key购买 nike

在我们的 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 在两个表中都转换为 int 类型,连接两个表时我可以期待更好的性能吗?

最佳答案

我个人建议将 COUNTRY_IDnvarchar(50) 更改为 INT。 int 使用 4 个字节的数据,JOIN 通常比 VARCHAR 更快。​​

您还可以使用存储过程 sp_spaceused 来检查所使用的空间是否减少了

EXEC sp_spaceused 'TableName'

关于sql - 是否值得将主键从 NVARCHAR 类型切换到 INT 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17469677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com