【问题标题】:Optimize performance for date range query in SQL优化 SQL 中日期范围查询的性能
【发布时间】:2022-01-16 10:05:33
【问题描述】:

我的场景如下:我有一个表Tblbalance,其中包含一个日期和时间列。

当我在存储过程中使用正常的 between 子句进行搜索时,它会在 linq 中抛出错误超时。

我尝试在 linq 中将默认时间从 30 秒延长到 2 分钟,但没有奏效。

请帮助我获得从选择查询返回的最快方式

我尝试的示例查询如下:

select
    col1,
    col2,
    col3,
    (select top 1 col from tblname where id = tblbalance.id)
from 
    tblbalance
where 
    datecol between startdate and todate 
order by 
    col3

【问题讨论】:

  • TOP 没有ORDER BY 很少有意义。
  • 数据库是什么?
  • tblbalance 的行中有多少百分比选择(估计)?
  • 请包括表的主键,以及唯一约束和现有索引。
  • tblbalance 和 tblname 有相同的 id?你能展示一下架构吗?

标签: sql sql-server query-optimization


【解决方案1】:

我建议在您的表中再包含一列,并在该列中复制日期时间的数字,同时在新创建的数字列上创建一个索引。然后不要在 where 子句中使用 datetime 列,而是尝试使用数字列。

这样您的查询将在索引上运行并得到优化。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2014-09-29
  • 1970-01-01
  • 2023-01-28
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多