我对 sql server 2012 中的数据库和查询有一个奇怪的问题。
在记录中,有一列是datetime类型(不是 datetime2),并以格式存储值,'YYYY-MM-dd HH:mm:ss.ttt'
但我有一个问题......如果我进行此查询:
SELECT *
FROM table1 cg
INNER JOIN table2 mv ON cg.mv_id = mv.mv_id
FULL JOIN table3 fu ON cg.fu_id = fu.fu_id
FULL JOIN table4 cl ON cg.cl_id = cl.cl_id
INNER JOIN table5 so ON mv.so_id = so.so_id
WHERE mv.su_id = 1 AND (mv.mv_fecha >= '2013-09-02 17:46:03.571' AND mv.mv_fecha <= '2013-09-04 23:59:59.999')
然后大约需要 10 秒,但如果我将其更改mv.mv_fecha >= '2013-09-02 17:46:03.571'
为'2013-09-02 17:46:03.572'
(注意我将毫秒 571 更改为 572),那么查询需要大约 4 分钟!而且我只有这条记录..如果我进行任何超过那毫秒的查询,查询就会花费很长时间。我必须随便指定table2中有一条带有mv_fecha 之类'2013-09-02 17:46:03.573'
的记录,但即使有一条带有该日期时间的记录,查询也不会检索它,因为它是一条su_id = 2的记录(并且在查询中过滤的su_id为 1 )。
这是怎么回事???
更新:我对table1有一些理论.. 它是table1有数千条记录,它是一个不包含任何索引的表?...可能是问题所在?
更新 2:这是查询的执行计划: