我经常发现自己在创建“链接表”。例如,下表将用户记录映射到事件记录。
CREATE TABLE [dbo].[EventLog](
[EventId] [int] NOT NULL,
[UserId] [int] NOT NULL,
[Time] [datetime] NOT NULL,
[Timestamp] [timestamp] NOT NULL
)
出于此问题的目的,请假设 EventId 加上 UserId 的组合是唯一的,并且所讨论的数据库是 MS SQL Server 2008 安装。
我遇到的问题是我永远不确定这些表应该如何被索引。例如,我可能想要列出特定事件的所有用户,或者我可能想要列出特定用户的所有事件,或者检索特定的 EventId/UserId 记录。我考虑过的索引选项包括:
- 在 EventId 和 UserId 上创建复合主键(但我知道在通过 UserId 自行访问时索引将无用)。
- 在 EventId 和 UserId 上创建复合主键,并在 UserId 上添加补充索引。
- 在 EventId 上创建主键,在 UserId 上创建补充索引。
任何意见,将不胜感激。