【发布时间】:2011-05-03 04:11:27
【问题描述】:
我有一个结构如下的 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] 等并为它们创建索引 - 别的东西...
【问题讨论】:
标签: sql sql-server indexing query-optimization