我有以下 sql 查询,只需 1 秒即可执行:
select a.date, b.rate, c.type, a.value from
a inner join b on a.id = b.aid
c inner join b.id = c.bid
where a.name = 'xxx'
但是我需要一个结果集来获得比率大于 0 的结果。因此,当我将查询更改为此时,需要 7 分钟才能执行:
select a.date, b.rate, c.type, a.value from
a inner join b on a.id = b.aid
c inner join b.id = c.bid
where a.name = 'xxx' and b.rate>0
为什么这会使查询时间从 1 秒增加到 7 分钟?由于 b 表很大,我什至尝试使用 CTE,但这也没有提高性能。我认为使用 CTE 会有更小的一组值可供过滤,因此它应该更快,但这并没有帮助:
;with x as
(select a.date, b.rate, c.type, a.value from
a inner join b on a.id = b.aid
c inner join b.id = c.bid
where a.name = 'xxx')
select * from x where rate>0
我不能包含执行计划,因为除了查询之外我没有对 db 的权限。