Текущее время: Вс, июл 27 2025, 19:59

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Что быстрее?
СообщениеДобавлено: Пн, ноя 22 2010, 08:59 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Добрый времени суток.

Есть две одинаковые выборки:
Code:
TRY.
    EXEC SQL.
      OPEN dbcur FOR
    SELECT
            inb1_h.op_code,
            inb1_h.reasn,
            inb1_h.recv_code,
            inb1_h.recv_region,
            inb1_h.recv_subregion,
            inb1_h.send_code,
            inb1_h.send_region,
            inb1_h.send_subregion,
            inb1_h.reg_date,
            inb1_h.reg_num,
            inb1_h.doc_date,
            inb1_h.doc_num,
            inb1_h.org_date,
            inb1_h.org_num,
            inb1_h.agr_date,
            inb1_h.agr_num,
            inb1_h.tot_cost_net,
            inb1_h.tot_cost_tax,
            inb1_h.tot_sale_net,
            inb1_h.tot_sale_tax,
            inb1_d.mpg_type,
            inb1_d.mpg,
            inb1_d.cost_net,
            inb1_d.cost_tax,
            inb1_d.sale_net,
            inb1_d.sale_tax,
            inb1_d.fidoc,
            inb1_d.fidoc_sd,
            inb1_d.sodoc,
            inb1_d.factdoc,
            inb1_d.load_ind,
            inb1_d.corr_ind,
            inb1_d.saprowid,
            inb1_h.loadnum,
            inb1_h.seq_num
      FROM zhosinb1 inb1_d
      INNER JOIN zhosinb1_vw inb1_h ON ( inb1_h.loadnum = inb1_d.loadnum AND inb1_h.seq_num = inb1_d.seq_num )
    ENDEXEC.
    DO.
      EXEC SQL.
        FETCH NEXT dbcur INTO :fl_inb1_d
      ENDEXEC.
      IF sy-subrc <> 0.
        EXIT.
      ELSE.
        APPEND fl_inb1_d TO ft_inb1_d.
      ENDIF.
    ENDDO.
    EXEC SQL.
      CLOSE dbcur
    ENDEXEC.
  CATCH cx_sy_native_sql_error.
    MESSAGE `Ошибка` TYPE 'I'.
    EXIT.
ENDTRY.

Code:
  SELECT
          inb1_h~op_code
          inb1_h~reasn
          inb1_h~recv_code
          inb1_h~recv_region
          inb1_h~recv_subregion
          inb1_h~send_code
          inb1_h~send_region
          inb1_h~send_subregion
          inb1_h~reg_date
          inb1_h~reg_num
          inb1_h~doc_date
          inb1_h~doc_num
          inb1_h~org_date
          inb1_h~org_num
          inb1_h~agr_date
          inb1_h~agr_num
          inb1_h~tot_cost_net
          inb1_h~tot_cost_tax
          inb1_h~tot_sale_net
          inb1_h~tot_sale_tax
          inb1_d~mpg_type
          inb1_d~mpg
          inb1_d~cost_net
          inb1_d~cost_tax
          inb1_d~sale_net
          inb1_d~sale_tax
          inb1_d~fidoc
          inb1_d~fidoc_sd
          inb1_d~sodoc
          inb1_d~factdoc
          inb1_d~load_ind
          inb1_d~corr_ind
          inb1_d~saprowid
          inb1_h~loadnum
          inb1_h~seq_num
    INTO TABLE ft_inb1_d
    FROM zhosinb1 AS inb1_d
    INNER JOIN zhosinb1_vw AS inb1_h ON inb1_h~loadnum = inb1_d~loadnum AND
                                        inb1_h~seq_num = inb1_d~seq_num.


Что отработает быстрее? Вопрос из категории "HAVE TO KNOW"...

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Что быстрее?
СообщениеДобавлено: Пн, ноя 22 2010, 09:27 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 20 2008, 16:29
Сообщения: 245
Откуда: RU->DE
Пол: Мужской
Можно спросить об этом se30.
В любом случае первый вариант - это какой-то крайний случай и плюс ко всему, имхо, обращений к серверу БД получится больше, что тоже не очень хорошо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что быстрее?
СообщениеДобавлено: Пн, ноя 22 2010, 09:53 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Кто сильнее, кит или слон? (c)
SM30/ST05 что говорят по этому поводу?
Лично я бы предположил что второй вариант быстрее, не говоря уж о том что он более читабельный и красивый

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что быстрее?
СообщениеДобавлено: Пн, ноя 22 2010, 10:05 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
FeBO-Sh написал:
Добрый времени суток.

Есть две одинаковые выборки:
Code:
    EXEC SQL.
      OPEN dbcur FOR   
ENDEXEC.

Code:
  SELECT
    INTO TABLE ft_inb1_d
    FROM zhosinb1 AS inb1_d

Что отработает быстрее? Вопрос из категории "HAVE TO KNOW"...

Быстрее получить по шапке за первый вариант.
Т.к. NativeSQL скорее для случая работы с внешними БД напрямую, но никак не для работы с собственными таблицами и ракурсами.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что быстрее?
СообщениеДобавлено: Пн, ноя 22 2010, 11:06 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
В общем-то я и не использую EXEC SQL для выборки из SAP-ских таблиц, просто для знаний :)...

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Что быстрее?
СообщениеДобавлено: Пн, ноя 22 2010, 11:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Для знаний: в ABAP есть OPEN CURSOR, поэтому EXEC SQL здесь не нужен.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что быстрее?
СообщениеДобавлено: Вт, ноя 30 2010, 15:21 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, июл 28 2007, 20:38
Сообщения: 364
Запоздало, но все-таки.
Чтобы сравнивать что быстрее, надо понимать, за счет чего может быть быстрее.
В данном случае - за счет того что запрос частично минует саповский диспетчер, поиск возможного наличия данных в буфере и только. Сколько на этом хотите выиграть?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что быстрее?
СообщениеДобавлено: Сб, дек 11 2010, 10:02 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 12 2008, 07:40
Сообщения: 196
Откуда: Екатеринбург
Пол: Мужской
одинаково должно быть, так как при использовании второго варианта ваш первый вариант будет сгенерирован в DATABASE INTERFACE. Другими словами, в СУБД все равно прилетит нативное высказывание.

_________________
ай, каррамба


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB