Текущее время: Чт, июл 31 2025, 16:49

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


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

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


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

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