我有简单的查询,但执行时间太长。
询问:
SELECT a.primarykey,
a.SID,
a.VID,
a.topic,
a.dstart,
a.dstop,
a.vresult,
a.dstart1,
a.dstart2,
( SELECT MIN(d.vresult)
FROM _temp._pb_1_1_4_1 d
WHERE d.dstart1 > a.dstart1
) as _DOP0
FROM _temp._pb_1_1_4_1 a
列dstart1
被索引。
dstart1
是日期类型列。
请帮我优化上述查询。
如果我d.dstart1 > a.dstart1
从WHERE
子句中删除,则查询运行得非常快。
当我解释查询时,它给出“检查每条记录的范围(索引图:0x1)”
我想为每一行实现 vresult 的最小值。对于每一行,首先过滤同一表中 dstart1 值较大的所有记录,然后找到该行的 min(vresult)。