Запрос не возвращает все строки каждый раз - PullRequest
1 голос
/ 15 февраля 2012

У нас есть два простых запроса (внутри хранимой процедуры, используемых веб-сайтом):

    if @a = 1
begin
select a.col1, a.col2 , b.col1 from table1 a join table2 b
on a.id = b.id 
where a.col1 = 'yyyy'
end
else
begin
select a.col1, a.col2 , b.col1 from table1 a join table2 b
on a.id = b.id 
where a.col1 = 'zzzz'
end

С первым запросом проблем не возникает (@a = 1).Второй должен вернуть 48 строк (таблицы пишутся не часто).Один или два раза в день (из сотен обращений) второй запрос возвращает 10 или 30 строк (для отладки я вставил @@ rowcount в другую таблицу).Таким образом, чтобы заставить его вернуть мне 48 строк, я попробовал что-то вроде этого:

else
again:
begin
select a.col1, a.col2 , b.col1 from table1 a join table2 b
on a.id = b.id 
where a.col1 = 'zzzz'
if @@rowcount <> 48 goto again
end

, он продолжает цикл в течение нескольких минут (никогда не возвращает 48 строк), пока я не убью спид.

Любая идеяпомог бы.Спасибо

1 Ответ

0 голосов
/ 15 февраля 2012

если вы возвращаете 10 или 30, комбинация никогда не будет 48.

измените ее на:

if @@rowcount >= 48 goto again

, хотя я считаю, что ваша работа вокруг не имеет большого смысла.У вас действительно есть 48 строк на вашем втором выборе?

...