Текущее время: Ср, июл 02 2025, 23:41

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 01 2006, 16:01 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Морской написал(а):
Дак в этом и вопрос. Если 4 select с group by, то можно.

Дык вот тебе и ответ: агрегировать в 1 селекте, а урезанность синтаксиса лечить дополнительной обработкой в программе.
Лепить бездумно селекты не следует по двум причинам:
1) Сервер БД вынужден 4 раза обрабатывать один и тот же селект, проходить по одной и той же таблице, одному и тому же полю только с разными условиями, что ни в какие ворота...
2) Если условия задачи изменятся, например, будет требоваться сделать поквартальный отчет за N лет, то количество таких селектов будет расти пропорционально, а производительность пропорционально падать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 01 2006, 16:14 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Дмитрий написал:
Дык вот тебе и ответ: агрегировать в 1 селекте, а урезанность синтаксиса лечить дополнительной обработкой в программе.
Лепить бездумно селекты не следует по двум причинам:
1) Сервер БД вынужден 4 раза обрабатывать один и тот же селект, проходить по одной и той же таблице, одному и тому же полю только с разными условиями, что ни в какие ворота...
2) Если условия задачи изменятся, например, будет требоваться сделать поквартальный отчет за N лет, то количество таких селектов будет расти пропорционально, а производительность пропорционально падать.


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

2Морской:
Все зависит от количества данных, которые планируете получать. Для больших объемов мне кажется лучше 4 селекта, для небольших - одил селект будет наверное красивее :) Хотя как делать. Резюме - сделать оба варианта и погонять их в ST05

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 01 2006, 16:39 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
ArmAnn написал:
Насколько я помню - сервер БД хранит план запроса какое то время, то бишь из нескольких аналогичных селектов с немного разными параметрами долго будет выполняться только первый, остальные используют план запроса от первого, что весьма может ускорить время выборки.

2Морской:
Все зависит от количества данных, которые планируете получать. Для больших объемов мне кажется лучше 4 селекта, для небольших - одил селект будет наверное красивее :) Хотя как делать. Резюме - сделать оба варианта и погонять их в ST05

Некоторые сервера БД не только хранят, но и записывают на диск планы запросов и время их обработки. Тут никаких 4 селектов не надо, потому что максимальный размер результирующей выборки при группировке по дням - 366 записей, что совсем немного.
Следует отметить, что мы здесь вообще не говорим о размере исходной таблицы и о том, включены ли поля, на которые накладываются ограничения, в первичный ключ и индексы. А это стоит учесть... как и некоторые другие вещи.
Но здесь по производительности максимальный выигрыш - 1 select и последующая обработка на ABAP'е. Никаких других вариантов, кроме, разве что NativeSQL. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, фев 01 2006, 23:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, мар 17 2005, 17:24
Сообщения: 170
Откуда: страна советов
Пол: Мужской
Цитата:
Все зависит от количества данных, которые планируете получать. Для больших объемов мне кажется лучше 4 селекта, для небольших - одил селект будет наверное красивее :) Хотя как делать. Резюме - сделать оба варианта и погонять их в ST05


Хочу спросить, а где приблизительно начинаются большие объемы, которые нужно разбивать на несколько селектов?

_________________
"there's always something waiting at the end of the road.
if you are not willing to see it, you probably shouldn't be there in the first place."
- clive owen, "the follow" (bmw film)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, фев 02 2006, 05:22 
Ассистент
Ассистент

Зарегистрирован:
Пн, апр 18 2005, 11:09
Сообщения: 47
:) всё относительно. От аппаратных средств тоже кое-что зависит. Если система летает, значит всё нормально у вас :) .


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

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Дмитрий написал:
Некоторые сервера БД не только хранят, но и записывают на диск планы запросов и время их обработки. Тут никаких 4 селектов не надо, потому что максимальный размер результирующей выборки при группировке по дням - 366 записей, что совсем немного.
Следует отметить, что мы здесь вообще не говорим о размере исходной таблицы и о том, включены ли поля, на которые накладываются ограничения, в первичный ключ и индексы. А это стоит учесть... как и некоторые другие вещи.
Но здесь по производительности максимальный выигрыш - 1 select и последующая обработка на ABAP'е. Никаких других вариантов, кроме, разве что NativeSQL. :)

да, согласен :oops:

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


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

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
rainman написал:
Цитата:
Все зависит от количества данных, которые планируете получать. Для больших объемов мне кажется лучше 4 селекта, для небольших - одил селект будет наверное красивее :) Хотя как делать. Резюме - сделать оба варианта и погонять их в ST05


Хочу спросить, а где приблизительно начинаются большие объемы, которые нужно разбивать на несколько селектов?


Цифр я вам не назову ;) смотрите как система себя ведет.
На моей старой работе одна девушка умудрялась во внутреннюю табличку полтора миллиона записей выгружать и там их абапом анализировать. И попутно удивлялась почему все так медленно работает :)

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу Пред.  1, 2

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


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

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


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

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