1

在我的网站中,我不创建用户。用户是/被创建在不同的系统中,我无权访问。

他们在那里使用了 Userid = VARCHAR(50)

在我这边,我有一张非常简单的桌子,比如

 UserId VARCHAR(50)
 Employer VARCHAR(4)
 UserSpecificField VARCHAR(8)
 DateWhenItWasAddedToOurSystem DATETIME

登录到我的系统后,我只做了一个简单的 SYNC,所以我的系统中也有所有人。我在这张表中有 2000 条记录。

问题:

我知道索引很好,应该使用它。我正在考虑向该表添加一个索引列,但我不确定它是否会有所帮助。

即使您不将该列用于任何内容,添加索引是否有助于提高性能?因为在我使用 USER 的任何地方,我都被迫使用用户的 VARCHAR(50) ID 来进行基于 SQL JOIN 的操作。

谢谢

4

1 回答 1

0

除了小表大小之外,在此结构的表中的 UserId 上添加索引是没有意义的。请注意,这一列(假设 varchar(50) 字段将平均填充 50%),这一列将是表大小的 70%。因此 db 引擎必须首先扫描索引(其大小几乎与整个表一样大),然后在表中查找记录。此操作将比仅扫描表更占用资源。我很确定优化器根本不会使用索引。自己测试一下。在我看来,唯一的选择是添加一个聚集索引,它实际上将按 UserId “排序”您的表,使查询运行得更快,并且不会通过构建附加结构(即“正常”索引)来产生任何开销。我假设更新操作不经常执行。

create unique clustered index idxCLU__userid on <your_table_name>(UserId )
于 2013-03-15T09:28:21.597 回答