【发布时间】:2017-03-03 20:39:22
【问题描述】:
我有两张桌子。这是在 SQL Server 2008 R2 中:
dbo.Source: SourceId(int), SourceName (varchar(10))
SourceId|SourceName
1|Source1
2|Source2
3|Source3
dbo.SourceIdentifiers:Id(int)、SourceId(int)外键Source.SourceId、SourceIdentifier varchar(30)
Id|SourceId|SourceIdentifier
1|1|123
2|1|456
3|2|789
4|2|789
5|2|789
6|3|ABC
如您所见,我从多个来源接收数据,大多数来源都有一个数字作为其标识符,但其中一些也有字符。所以我的 SourceIdentifier 列需要是 varchar。
通常根据 SourceIdentifier 查询表。我可以拥有多达 1 亿个唯一源标识符。我希望查询超级快。我有几个问题:
- 如果我在 SourceIdentifier 列上添加索引,这是个好主意吗?由于该列有大约 75% 的整数存储为 varchars。
- 如果不是,还有什么替代方法。创建两个源标识符表,一个用于整数源,一个用于字符源?
谢谢!
【问题讨论】:
标签: sql-server sql-server-2008 indexing