【发布时间】:2016-06-09 06:12:00
【问题描述】:
我在 SSMS2008 中有以下查询:
select *
from Measurements
where dt > '2016-01-01 04:00:00'
and dt < '2016-01-01 04:05:00'
and classification = 'heartbeat'
我的表中有超过 4 亿条记录、心跳和其他数据(我知道),但上面的查询在不到 1 秒的时间内执行 (检索大约 1500 条记录)。 dt 和分类列都有索引。
当我在 NHibernate 中使用这个查询时:
var heartbeats = session.Query<Measurements>()
.Where(m.dt > dtFr &&
m.dt < dtTo &&
m.classification = 'heartbeat')
.ToList();
.. 但是,此查询失败。唯一不同的(据我所知),是我使用 DateTime 对象(dtFr 和 dtTo) 并将它们传递给 linq表达。但是,当此查询失败(超时)时,我可以将失败的查询复制并粘贴到 SSMS2008,它会在那里执行而不会出现任何问题。
编辑:昨天我做了太多的测试,结果搞混了。似乎失败的查询没有运行(既不是来自 SSMS)。我看不出我做错了什么。
【问题讨论】:
-
那么现在的问题是什么?当您不知道自己在做什么时很难帮助您...
标签: c# sql-server performance linq nhibernate