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

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


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

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


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

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