powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Почему так тормозит запрос?
18 сообщений из 18, страница 1 из 1
Почему так тормозит запрос?
    #39788892
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для импорта/экспорта нужно взять 1000 записей из master, затем связанные с ними записи из child. Запрос получился какой-то дико тормозной.

Код: sql
1.
2.
3.
4.
5.
select m.field_1, c.field_A, field_B 
from master m
left join child c on m.primary_key=c.for_key
where m.primary_key in
(select first 1 skip 0 primary_key from master order by primary_key)
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39788899
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази,

Это все данные, которые можешь предоставить?
Т.е. даже гущу для гадания нам самим заваривать?
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39788911
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryКвази,

Это все данные, которые можешь предоставить?
Т.е. даже гущу для гадания нам самим заваривать?

две таблицы. PK и FK integer-ы, остальное varchar-ы небольшие. В master около 100К записей, в child около миллиона. База тестовая, поэтому мусора и прочего в ней конечно может быть много. Плана запроса нет, запрос висит уже около часа.
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39788929
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Квази,

Замени in (select) на select from (select from rows) join.
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39788950
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Плана запроса нет, запрос висит уже около часа.
как это мешает сделать prepare и показать план?
а так же ddl таблиц и статистику индексов
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789040
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FКвази,

Замени in (select) на select from (select from rows) join.

А на хрена там вообще вложенный запрос?
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789050
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём смысл конструкции под where?
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789059
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разве вот такое
Код: sql
1.
2.
3.
select first 1000 m.field_1, c.field_A, field_B 
from master m
left join child c on m.primary_key=c.for_key

[/quot]
не будет делать то же самое?
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789065
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя нет.
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789066
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183разве вот такое
Код: sql
1.
2.
3.
select first 1000 m.field_1, c.field_A, field_B 
from master m
left join child c on m.primary_key=c.for_key


не будет делать то же самое?
Иногда да
но вообще то Нет
тоже самое будет делать если последовать совету 21838280
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789092
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаА на хрена там вообще вложенный запрос?
Чтобы взять 1000 первых мастеров, а не произведений мастеров с деталями.))
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789109
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,

я в запросе упоминания этой 1000 в упор не вижу (ошибка в first 1 ?). Если надо брать 1000 мастеров и соотв детали, так и надо так делать (брать 1000, а потом уже соединять), а не брать ВСЁ, а потом выколупывать оттуда 1000 мастеров.
В исходном запросе, если в мастере 100к записей, получилось как минимум 100к заходов в подзапрос.
И тут возникает ключевой момент - какой план у left join. Я не уверен, из-за чего возникли тормоза, то-ли из-за master натуралом, то ли наоборот, из-за мастера индексом.

Правильный запрос:

with A as
(select first 1000 skip 0 primary_key
from master order by primary_key)
select a.* from a left join
child c on a.primary_key=c.for_key

и план оч.хор.
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789110
Квази
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FКвази,

Замени in (select) на select from (select from rows) join.

Хм. Вот так что ли?
Код: sql
1.
2.
3.
4.
select  field_1, field_2, c.field_A, c.field_b 
from
(select first 1000 skip 0 primary_key, field_1, field_2 from master where bla_bla_bla order by primary_key)  m
left join child c on m.primary_key=c.for_key



Спасибо, работает.
------ Performance info ------
Prepare time = 0ms
Execute time = 16ms
Avg fetch time = 0,76 ms
Current memory = 36 337 408
Max memory = 36 435 776
Memory buffers = 4 096
Reads from disk to cache = 0
Writes from cache to disk = 0
Fetches from cache = 715

Первый вариант барабанил час с лишним.
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789116
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FСтарый плюшевый мишкаА на хрена там вообще вложенный запрос?
Чтобы взять 1000 первых мастеров, а не произведений мастеров с деталями.))

А слово "left" к произведению каким боком?
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789136
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

Дед, произведение, ведь в том числе и один на многое.)) Закрадывается, однако, мысль,
что у тебя там под тулупом есть что то и без подзапроса. Так не томи уж, доставай.))
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789294
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad FСтарый плюшевый мишка,

Дед, произведение, ведь в том числе и один на многое.)) Закрадывается, однако, мысль,
что у тебя там под тулупом есть что то и без подзапроса. Так не томи уж, доставай.))

До меня дошло. Я неправильно понял условие задачи. Надо 1000 мастеров, а записей в резалте хоть мульён. Тогда да.
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789295
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

Старик Державин нас заметил и, и в гроб сходя (я не конкретно, просто вспомнилось почему-то)), благословил. (с)))
...
Рейтинг: 0 / 0
Почему так тормозит запрос?
    #39789296
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Аэропорт-то таки наш или не наш?))
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Почему так тормозит запрос?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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