powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизация запросов - один большой или несколько маленьких?
4 сообщений из 4, страница 1 из 1
Оптимизация запросов - один большой или несколько маленьких?
    #32584449
Андрей12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База - ФБ 1.5, вся логика построена на хранимых процедурах, т.е. вся обработка выполняется только на сервере.

Данные - от 1 до 5000-7000 записей о клиентах, каждой из которых может принадлежать от 1 до 20 подчиненных записей из разных таблиц. Кроме того, используются данные из справочников - тарифы, названия улиц и т.д.

В настоящий момент обработка реализована следующим образом: для перерасчёта данных вызывается ХП, в которой имеется 1 for select , включающий 6 union 'ов. В теле selecta'а для каждой записи вызываются несколько других ХП, которые также делают всевозможные запросы к БД для получения уточняющей информации.

Теоритически, наиболее "красивым" решением будет создание вместо нескольких маленьких - одного большого и хитромудрого запроса, который подготовит одну большую выборку со всеми необходимыми данными. После чего по этой выборке делается один проход ... и оп-ля, наши сбоку - ваших нет... Уменьшение трафика, уменьшается число обращений в диску и так далее.

Вопрос заключается в следующем. Есть ли какие-либо ограничения на сложность запроса в ФБ? Сложный запрос состоит, в моём случае, из 6 union'ов, в каждом из которых по 2-5 вложенных друг в друга select'ов. Строка с текстом запроса занимает 5100 байт. И вообще, имеет ли смысл делать такую оптимизацию? Какие тут могут быть подводные камни? Если кто-нибудь проводил сравнение производительности запросов "один большой против нескольких маленьких", поделитесь пожалуйста вашим мнением.
...
Рейтинг: 0 / 0
Оптимизация запросов - один большой или несколько маленьких?
    #32585172
olol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я предпочитаю делать авторасчет, т.е. данные расчитываются по мере занесения.

В этом случае всегда видно текущее состояние дел и не нужно специально запускать расчет.

Правда это бывает не всегда возможным...

А на счет перерасчета - так лучше оставь как есть... (лучшее - враг хорошего)

Тем более что разбивка задачи на несколько функционально законченных действия повышает ее читабельность и возможность модернизации...

Сам расчет, как я понял, запускается не часто и на его 'вылизывание' не стоит тратить время.
...
Рейтинг: 0 / 0
Оптимизация запросов - один большой или несколько маленьких?
    #32585338
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложный запрос FB выполнит, видел я и сложнее.

Но ЧАЩЕ приходилось раскручивать таких монстров в ХП для ускорения работы. В твоем случае пока не напишешь и не выполнишь его не узнаешь будет быстрее или медленнее.
...
Рейтинг: 0 / 0
Оптимизация запросов - один большой или несколько маленьких?
    #32586212
Андрей12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ololЛично я предпочитаю делать авторасчет, т.е. данные расчитываются по мере занесения. В этом случае всегда видно текущее состояние дел и не нужно специально запускать расчет.
Да, у меня именно так и сделано - расчёт производится в тот момент, когда данные заносятся БД. Но по логике работы у меня он выполняется не автоматом, а запускается по специальной кнопочке "Расчитать".

ololА на счет перерасчета - так лучше оставь как есть... (лучшее - враг хорошего) Тем более что разбивка задачи на несколько функционально законченных действия повышает ее читабельность и возможность модернизации... Сам расчет, как я понял, запускается не часто и на его 'вылизывание' не стоит тратить время.
Понял, так и сделаю.

Всем спасибо за ответы.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оптимизация запросов - один большой или несколько маленьких?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]