Сравнение SQL-запросов в ProC с использованием курсора и без него - PullRequest
0 голосов
/ 03 декабря 2009

Что, с точки зрения производительности запросов, более эффективно?
Учитывая, что T - это таблица, а PK - это первичный ключ в таблице T. Они разные или это просто вопрос выбора?

select col1, col2 into :var1, :var2 
  from T 
 where PK = a

... или:

  1. EXEC SQL ОБЪЯВЛЯЕТ aCursor CURSOR FOR выберите col1, col2 в: var1,: var2 из T, где PK = a;
  2. EXEC SQL OPEN aCursor
  3. EXEC SQL FETCH aCursor

Я думаю, что объявление курсора для извлечения одной строки из таблицы на основе первичного ключа не имеет смысла, если бы вместо этого можно было получить одну строку напрямую?

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Если вы используете только одну строку, я бы НЕ использовал курсор, который выглядит как перебить

0 голосов
/ 03 декабря 2009

SELECT INTO всегда будет быстрее, чем при использовании курсора.

Если вы ничего не выполняете, когда курсор открыт, нет никакого смысла использовать курсор вообще. Это помимо того факта, что поиск по PK гарантированно возвращает одну строку, при условии, что значение PK существует в таблице.

...