Sql server SP超时。复合索引是否有帮助(群集或非群集)?

Sql server SP超时。复合索引是否有帮助(群集或非群集)?,sql-server,Sql Server,使用SQL Server 2012。我有一张超过1000万条记录的桌子。前端是一个带有多个复选框、单选按钮、两个日期文本框(从/到)等的网络表单 存储过程的WHERE语句中包含的变量有: 时间戳 陈述 JTYPE CIE 新科技工业 医学博士 FC_CD_IND WLU工业 已完成 插播 添加物 一周中的第二天 每天一大早,表格只更新一次。流量低,用于分析目的 我目前的索引是: CREATE CLUSTERED INDEX [IX_Summary] ON [dbo].[Summary] (

使用SQL Server 2012。我有一张超过1000万条记录的桌子。前端是一个带有多个复选框、单选按钮、两个日期文本框(从/到)等的网络表单

存储过程的WHERE语句中包含的变量有:

  • 时间戳
  • 陈述
  • JTYPE
  • CIE
  • 新科技工业
  • 医学博士
  • FC_CD_IND
  • WLU工业
  • 已完成
  • 插播
  • 添加物
  • 一周中的第二天
每天一大早,表格只更新一次。流量低,用于分析目的

我目前的索引是:

CREATE CLUSTERED INDEX [IX_Summary] ON [dbo].[Summary]
(
    [TIME_STAMP] ASC,
    [STATE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
时间戳与“从/到”文本框一起使用。这是最重要的字段,因为分析师使用它来查询不同的时间间隔,从一天到几个月不等。 目前,当人们使用该时间戳变量(datetime2(0)类型)选择一个较大的间隔范围时,我会超时


我想我的索引有错。是否可能添加一个复合索引,其中包含我的WHERE子句help中使用的所有变量?有更好的方法吗?

您需要包括sql+CREATETABLE子句+查询计划+最好还包括查询的统计io输出。这只是一个猜测,但可能是键查找、溢出到临时数据库或排序导致了您的问题?然后里面可能有很多类似于“And INTERV=@INTERV或@u INTERV为NULL”的where谓词??这就是所谓的“一网打尽”查询,其性能可能非常糟糕。查看此链接,了解一些处理此问题的方法@Sean Lange,这篇文章建议我有时使用动态sql。我不知道具体的情况。我想我的问题是,覆盖所有这些变量的最佳索引类型是什么?那篇文章的建议不仅仅是动态sql。如果你真的想在这里得到一些帮助,使你的代码更快,你需要阅读,以提供更多的细节。我们需要查看表,以及您正在运行的实际代码。如果你能发布实际的执行计划也会有所帮助。