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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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