select nid, avg, std from sView1
where sid = 4891
and nid in (select distinct nid from tblref where rid = 799)
and oidin (select distinct oid from tblref where rid = 799)
and anscount > 3
Это запрос, который я сейчас пытаюсь выполнить.И его запуск занимает около 3-4 секунд.Однако, если я заменю значение "4891" на подзапрос, говорящий (select distinct sid from tblref where rid = 799)
, процедура просто зависнет, даже если подзапрос вернет только один sid
.
Запрос должен возвращать набор данных со средними (avg) и стандартные отклонения (std) для результирующего набора, который вычисляется через вложенные представления в sView1.Затем этот набор данных проходит через другое представление, чтобы получить некоторые средние значения и stdevs верхнего уровня.
Средние значения могут включать более 1 sid
(sid идентифицирует набор данных).
Этотрудно описать его более подробно, не раскрывая кодовую базу и структуру кода, которая не должна раскрываться;)
Кто-нибудь может подсказать, почему запрос зависает при попытке использовать подзапрос?(Код заново создан с использованием вложенных курсоров, поскольку мне сказали, что курсоры - это работа дьявола, а вложенные курсоры могут сделать меня стерильным)