powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Условие по связным таблицам.
9 сообщений из 9, страница 1 из 1
Условие по связным таблицам.
    #32746157
Nikola18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На днях из одной конторы меня попросили ускорить работу программы.
После обследования обнаружилось, что 99,9% времени уходит на выполнение запроса типа:

select * from TableA
 left outer join TableB on TableA.TableB_ID = TableB.ID
 left outer join TableC on TableA.TableC_ID = TableC.ID
where
 (TableA."Количество"-TableB."Количество"-TableС."Количество")>0
order by TableA.ID

причём количество записей в TableA более 500 тыс., выбираемых по условию остаётся 100 тыс.

Вопрос к сообществу: как ускорить выборку?

P.S.: Специально не указываю на каком сервере, т.к. меня интересует принципиальное решение.
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746210
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Если исходить из того, что схема должна остаться именно такой, а данные нужны только из A - лично я ввел бы в A денормализацию и предрассчитывал это "количество".

Соответственно, можно подумать над индексом по этому предрассчитанному полю - хотя не факт, что он ускорит процесс.
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746309
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы посоветовал убрать left outer join и поставить inner join
поскольку при отсутствии записей в вычислении выражения where будет null и выражение в таком случае будет FALSE. Эти записи отсекутся сами собой и проверка будет проходить в 5 раз быстрее
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746328
Nikola18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickЯ бы посоветовал убрать left outer join и поставить inner join
поскольку при отсутствии записей в вычислении выражения where будет null и выражение в таком случае будет FALSE. Эти записи отсекутся сами собой и проверка будет проходить в 5 раз быстрее
На самом деле записи из TableB и TableC могут не существовать, но выражение в действительности написано с использованием
iif("количество" is NULL, 0, "количество") для всех 3-х таблиц.

to softwarer:
а ни каких там индексов по значениям из связных таблиц вам не встречалось?
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746358
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выборке 20% записей индексы практически не помогают, зато могут изрядно тормозить модификацию. Прислушайтесь к softwarer, делайте денормализацию с предвычислением.
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746391
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikola18
После обследования обнаружилось, что 99,9% времени уходит на выполнение запроса типа:
... выбираемых по условию остаётся 100 тыс.
Может не на выполнение, а на перекачку данных?


Nikola18P.S.: Специально не указываю на каком сервере, т.к. меня интересует принципиальное решение.
ИМХО, решение как раз может быть в возможностях конкретного сервера.
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746416
Nikola18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Серега Nikola18
После обследования обнаружилось, что 99,9% времени уходит на выполнение запроса типа:
... выбираемых по условию остаётся 100 тыс.
Может не на выполнение, а на перекачку данных?

нет
Серега
Nikola18P.S.: Специально не указываю на каком сервере, т.к. меня интересует принципиальное решение.
ИМХО, решение как раз может быть в возможностях конкретного сервера.
Интересует как раз то, как такое может быть решено в рамках различных серверов.
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746433
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nikola18нет
Т.е. записи не передаются или пропускная способность сети такая большая? И сколько времени этот запрос обрабатывается в абсолютных величинах? В принципе запрос не слабый по объему данных - он и должен много отжирать.

Nikola18Интересует как раз то, как такое может быть решено в рамках различных серверов.
Так я и говорю, может на разных по разному.
...
Рейтинг: 0 / 0
Условие по связным таблицам.
    #32746437
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Индексы здесь точно не помогут.

Если нужно получить все данные даже при отсутствии записей в присоединенных таблицах, то попробуйте сделать так.

Создаем темповую таблицу и выбираем в нее все записи из первой таблицы.
Затем соединяя эту темповую по очереди с остальными двумя апдейтим темповую отнимая значения. Затем делаем выборку по условию. Будет ли быстрее под вопросом.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Условие по связным таблицам.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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