Текущее время: Ср, июл 30 2025, 22:01

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: ФМ по оптимизации запроса
СообщениеДобавлено: Вт, сен 29 2009, 18:43 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
В очередной раз столкнулся с оптимизацией запроса. Выборка из BSIS. У меня в условии поле около 7.
Некоторые из них задаются на селекционном экране. Целый час подбирал индекс, чтобы в условии написать полу в порядке следования их в индексе. При этом те поля, которые могут остаться пустыми старался не учитывать. И получилось всё-равно не очень шустро.
А теперь внимание, вопросы :)
1) Действительно ли необходимо поля в условии писать в порядке следования их в индексе чтобы при выборке этот индекс использовался?
2) Может существует в природе ФМ, который динамически генерирует SELECT, подбирая нужный индекс?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Вт, сен 29 2009, 19:59 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Валерка написал(а):
В очередной раз столкнулся с оптимизацией запроса. Выборка из BSIS. У меня в условии поле около 7.
Некоторые из них задаются на селекционном экране. Целый час подбирал индекс, чтобы в условии написать полу в порядке следования их в индексе. При этом те поля, которые могут остаться пустыми старался не учитывать. И получилось всё-равно не очень шустро.
А теперь внимание, вопросы :)
1) Действительно ли необходимо поля в условии писать в порядке следования их в индексе чтобы при выборке этот индекс использовался?
2) Может существует в природе ФМ, который динамически генерирует SELECT, подбирая нужный индекс?

По пункту 1 - посмотрите план запроса с разным порядком полей - наиболее надёжный и достоверный способ. Тем более что в Вашем вопросе не указана СУБД, а в данном случае это существенный момент.
По пункту 2 - не страдайте фигнёй, займитесь делом: оптимизацией выборок и обращений к БД или просто созданием требуемого индекса.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Вт, сен 29 2009, 20:10 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
Создание индексов на 7 полей для BSIS? Админы съедят.
К тому же некоторые поля на селекционном экране и пользователь их может заполнить, а может не заполнить. Так что тут индексы не помогут.
Но в общем в данном случае это больше академический интерес. Т.е. интересует не конкретный случай, а общий. Ну раз нет, значит нет.
Придется самому писать, если что.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Вт, сен 29 2009, 20:57 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Валерка написал(а):
Создание индексов на 7 полей для BSIS? Админы съедят.
К тому же некоторые поля на селекционном экране и пользователь их может заполнить, а может не заполнить. Так что тут индексы не помогут.
Но в общем в данном случае это больше академический интерес. Т.е. интересует не конкретный случай, а общий. Ну раз нет, значит нет.
Придется самому писать, если что.

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

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Вт, сен 29 2009, 21:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Валерка написал(а):
Создание индексов на 7 полей для BSIS? Админы съедят.

А селективность полей не пробовали посмотреть?
Глядишь, в выборке 4 поля останутся вместо 7-ми ;)

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Ср, сен 30 2009, 07:06 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Валерка написал(а):
К тому же некоторые поля на селекционном экране и пользователь их может заполнить, а может не заполнить.

  • Возможно, часть полей получится сделать обязательным.
  • Возможно, фильтр по некоторым полям не сильно повлияет на скорость выборки(про селективность вам уже говорили)
  • Рассмотрите вообще какие наборы параметров наиболее часто используются.
  • Возможно, для разных ситуаций придется по-разному организовать выборку
Имхо, имеет смысл заниматься оптимизацией конкретных ситуаций (наиболее популярных), а не всех возможных


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Ср, сен 30 2009, 08:31 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
По моему мнению в SAP вообще БД самые примитивные. :)
Вот такой код
Code:
  select *
    into TABLE it_BKPF
    from bkpf
   where bukrs = p_bukrs
     and gjahr = p_gjahr
     and monat = p_monat
  .
    DELETE it_BKPF
     WHERE stblg <> c_stblg
        or blart <> c_blart.

работает раз в 5! быстрее вот такого
Code:
  select *
    into TABLE it_BKPF
    from bkpf
   where bukrs = p_bukrs
     and gjahr = p_gjahr
     and monat = p_monat
     and stblg = c_stblg
     and blart = c_blart
  .

После таких примеров возникают мысли, что в SAP запросы вообще никак не оптимизируются при выполнении.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Ср, сен 30 2009, 08:56 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
Валерка написал(а):
По моему мнению в SAP вообще БД самые примитивные. :)
После таких примеров возникают мысли, что в SAP запросы вообще никак не оптимизируются при выполнении.

Запросы выполняются в БД. Каким "SAP должен оптимизировать"?
Вы, разумеется, разобрались в причинах такого поведения, прежде чем у вас сформировалось такое мнение?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса
СообщениеДобавлено: Ср, сен 30 2009, 09:06 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 304
В данном случае я выразился неточно. Конечно, запрос к БД должен оптимизировать не SAP, а БД. Но по моему мнению любая современная БД должна выполнять такой запрос быстро.
Объяснение такого поведение я придумал следующее:
В ключе только первые три поля. Когда выбираю по ключу, а потом удаляем ненужное, то как раз SAP быстро делает это в памяти.
БД быстро выбирает по ключу, но по доп. полям она выбирает медленно. Т.е. получается примерно следующее:
Случай 1.
Запрос в БД выбирает данные по индексу быстро. Потом в памяти обработка идет быстро, так как все данные уже в памяти.

Случай 2. Запрос в БД медленный, так как в запрос присутствуют поля, коорые не включе. Т.е. БД быстро находит кусок, который относится к индексным полям, а потом долго и нудно перебирает этот кусок данных для нахождения строк, которые удовлетворяют оставшимся двум полям, которые не в индексе.


Но это мои домыслы, не подкрепленные фактами


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ по оптимизации запроса  Тема решена
СообщениеДобавлено: Ср, сен 30 2009, 09:14 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Не надо гадать на кофейной гуще. Оптимизатор БД настолько сложная штука, что не всегда можно предсказать его поведение.
Обратитесь к админам, которые обслуживают БД, они должны знать про оптимизацию ;)

_________________
С уважением,
Удав.


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

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


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

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


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

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