我有一个SQL Server表,具有以下结构:
CREATE TABLE [dbo].[Log](
[LogID] [bigint] IDENTITY(1,1) NOT NULL,
[A] [int] NOT NULL,
[B] [int] NOT NULL,
[C] [int] NOT NULL,
[D] [int] NOT NULL,
[E] [int] NOT NULL,
[Flag1] [bit] NOT NULL,
[Flag2] [bit] NOT NULL,
[Flag3] [bit] NOT NULL,
[Counter] [int] NOT NULL,
[Start] [datetime] NOT NULL,
[End] [datetime] NOT NULL)
这个表用于记录活动。列A
-E
表示外键,Flag1
-Flag3
表示某些日志状态,列Start
和End
标记一个活动的开始和结束。
平均每30秒更新一次该表,更新会进行大约50次插入/更新操作。
用户可以从UI中进行查询,并过滤任何给定列和所有组合的列和列类型的数据。
对于这个表,最好的优化数据检索的方式是什么:
- 创建一个“主”索引,其中包含所有这些列
- 识别一些最常用的过滤器组合,例如[
A,D,E
],[A,Start,End
]等,并为它们创建索引 - 其他方法...