在我的网站中,我不会创建用户。用户是在我无法访问的其他系统中创建的。
他们使用了Userid = VARCHAR(50)
就我而言,我保留了一张非常简单的表格,例如
UserId VARCHAR(50)
Employer VARCHAR(4)
UserSpecificField VARCHAR(8)
DateWhenItWasAddedToOurSystem DATETIME
登录我的系统后,我只做一个简单的SYNC,所以我的系统中也有人。 我在这张表中得到了2000条记录。
问题:
我知道索引很好,应该使用它。我正在考虑在此表中添加一个索引列,但我不确定它是否会有所帮助。
即使您不将该列用于任何内容,是否添加索引以帮助提高性能?因为我在任何地方都使用USER,所以我不得不使用用户的VARCHAR(50)ID来创建SQL JOIN。
谢谢
答案 0 :(得分:0)
在小表大小旁边,在此结构的表中添加UserId的索引是没有意义的。请注意,此列(假定varchar(50)字段将平均填充50%),此单个列将占表大小的70%。 所以db引擎必须首先扫描索引(几乎是enitre表的大小),然后在表中查找记录。此操作比仅扫描表更耗费资源。我很确定优化器根本不会使用索引。自己测试一下。 在我看来,唯一的选择是添加一个聚簇索引,它实际上将UserId“排序”你的表,使查询运行得更快,而不是通过构建aditional结构(即“正常”索引)来增加任何开销。我假设更新操作不经常执行。
create unique clustered index idxCLU__userid on <your_table_name>(UserId )