小编Geo*_*e B的帖子

SQL Server 没有使用我的索引。如何使用我的索引?

我的客户正在使用表格来创建每月的财务报告。我对其进行了优化,因为大约有 40 个聚合列,并且它运行了大约 40 分钟才能看到输出。我创建了一个将聚合值存储到表中的流程,现在,在选择列时,聚合已经计算完毕,并且运行时间为 3-4 分钟。现在我正在尝试创建一个索引,但由于数据量很大(我猜)SQL Server 没有使用它。查询非常简单

Select * 
From Table
Where year(data_doc) = 2023
and month(data_doc) = 10
Run Code Online (Sandbox Code Playgroud)

我仅为“data_doc”列创建了非聚集索引,但 SQL Server 仍然扫描整个表。我更改了索引并包含了构成主键的列,如下所示:

CREATE INDEX ix_Data_Doc ON Tabel(data_doc,OperationDetail_Id, OperationTraceOut_Id,OperationTraceIn_Id).
Run Code Online (Sandbox Code Playgroud)

重要的是,客户端正在使用视图,并且“select * from view”返回大约 5700 万行,总共有 57 列。每年和每月使用过滤器,它会返回大约 2/3 百万行。列“data_doc”数据类型为“datetime”。

如何创建索引来优化流程?

sql t-sql sql-server indexing

0
推荐指数
1
解决办法
102
查看次数

标签 统计

indexing ×1

sql ×1

sql-server ×1

t-sql ×1