Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么在Where子句中添加新的DateTime筛选器会导致性能不佳?_Sql_Sql Server - Fatal编程技术网

Sql 为什么在Where子句中添加新的DateTime筛选器会导致性能不佳?

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

我有下一个查询,返回大约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子句中使用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'