У меня есть следующий 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, кроме запроса.