Sql 为什么在Where子句中添加新的DateTime筛选器会导致性能不佳?
我有下一个查询,返回大约100行:Sql 为什么在Where子句中添加新的DateTime筛选器会导致性能不佳?,sql,sql-server,Sql,Sql Server,我有下一个查询,返回大约100行: SELECT fecha,p_01,p_02,p_03,p_04,p_05,p_06 FROM values_periods_view WHERE indicator_number='460' AND indicador_date>='20210101' AND indicator_date<='20211231' 查询时间缩短为10秒 有人可以告诉我如何提高响应时间,以及为什么在Where子句中使用DateTime
SELECT fecha,p_01,p_02,p_03,p_04,p_05,p_06
FROM values_periods_view
WHERE
indicator_number='460'
AND indicador_date>='20210101'
AND indicator_date<='20211231'
查询时间缩短为10秒
有人可以告诉我如何提高响应时间,以及为什么在Where子句中使用DateTimes时会出现这种糟糕的性能
在回答之前,我将告诉您一些关于DB状态的信息:
- 用于搜索的所有列都有索引,索引在抛出查询之前已重新生成
- 统计数据已更新
- values\u periods\u view这是一个简单的视图,在Indicator\u date列上没有任何转换,该列只是一个日期时间为空的视图
- 数据库每天都有许多插入和修改(我认为更新统计数据可以解决问题,但更新统计数据后,结果非常相似)
- 执行计划:
注意数据库是:Microsoft SQL Server 2012-11.0.2100.60(X64)为什么要使用指示符编号作为字符串?字符串不是数字。任何有用的注释都必须基于(默认为视图)中的查询所做的操作、基表模式及其索引。此外,由于业务需要,使用@Stu indicator_编号的实际执行计划必须是字符串。例如,指示符编号可以是123b_32@GonzaloMartinez请使用stu提供的链接提供执行计划请添加完整的
CREATE TABLE
语句,包括索引、CREATE VIEW
语句(看起来您也有),并使用上面的链接共享查询计划
SELECT fecha,p_01,p_02,p_03,p_04,p_05,p_06
FROM values_periods_view
WHERE
indicator_number='460'
AND indicador_date>='20210101'