Текущее время: Пт, июл 18 2025, 19:10

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: быстродействие SQL
СообщениеДобавлено: Вт, авг 24 2004, 13:34 
Гость
Рассмотрим пример запроса
SELECT vbak~vbeln vbak~erdat vbak~ernam vbak~kvgr5 vbak~objnr
vbak~netwr vbak~waerk
kna1~name1 kna1~kunnr
adrc~city1 vbkd~bstdk vbkd~bstkd
vbpa~kunnr AS kunwe
FROM vbak INNER JOIN kna1 ON vbak~kunnr = kna1~kunnr
INNER JOIN adrc ON kna1~adrnr = adrc~addrnumber
**** INNER JOIN vbuk ON vbak~vbeln = vbuk~vbeln
INNER JOIN vbkd ON vbkd~vbeln = vbak~vbeln
AND vbkd~posnr = '000000'
INNER JOIN vbpa ON vbpa~vbeln = vbak~vbeln
AND parvw = 'WE'
INTO CORRESPONDING FIELDS OF TABLE rt_outtab
WHERE vbak~erdat IN erdat AND
( vbak~vbtyp = 'C' OR vbak~vbtyp = 'A' OR vbak~vbtyp = 'H' ) AND
vbak~ernam IN ernam AND
vbak~kunnr IN kunnr AND
*** vbuk~gbstk NE 'C' AND
vbkd~bstdk IN bstdk AND
adrc~date_from LE sy-datum AND
adrc~date_to GE sy-datum.

вопросы :
1)имеет ли преимущество такой запрос перед конструкцией
select * from vbak .....
select single * .....
......
endselect .
2) подхватится ли при этом индекс (vbak~erdat)

спасибо заранее всем ответившим


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 24 2004, 14:07 
Гость
На второй вопрос сможет ответить только транзакция ST04 :P


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, авг 24 2004, 14:27 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
На второй вопрос может ответить ещё и транзакция ST05.
А что касается джойна по 5-ти таблицам... Наверное, его лучше разбить. Но только не через вложенный селект. А лучше воспользоваться конструкцией for all entries, или подзапросами, или и тем и другим.
И вообще нагрузить application server :) .


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: быстродействие SQL  Тема решена
СообщениеДобавлено: Ср, авг 25 2004, 16:17 
Гость
1) select .. endselect - вредоносная конструкция, и от нее нужно отказаться в принципе.
2) заджойнить всегда быстрее, чем потом в loop-е по внутренней таблице делать select single.
3) что касается оптимизации времени выполнения вообще - это отдельная тема, есть много нюансов, и даже то, что я знаю и использую, будет перечислять долго. по поводу селектов мое мнение - старайтесь делать селектов чем поменьше, группируя по максимуму. В join-ах используйте ключи, и все будет нормально. А кроме того, помимо джойнов есть немало интересных конструкций, вот EGF про то же говорил - но это уже смотрите по ситуации......

4) что касается конкретной выборки, отвлекаясь немного от темы:
'INNER JOIN adrc ON kna1~adrnr = adrc~addrnumber' - это профанация, берите adrnr, и потом используйте функцию ADDR_GET (вспомните про sy-langu).


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

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


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

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


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

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