Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Почему так тормозит запрос? / 18 сообщений из 18, страница 1 из 1
20.03.2019, 11:22
    #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
20.03.2019, 11:32
    #39788899
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему так тормозит запрос?
Квази,

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

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

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

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

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

А на хрена там вообще вложенный запрос?
...
Рейтинг: 0 / 0
20.03.2019, 14:23
    #39789050
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему так тормозит запрос?
А в чём смысл конструкции под where?
...
Рейтинг: 0 / 0
20.03.2019, 14:30
    #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
20.03.2019, 14:33
    #39789065
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему так тормозит запрос?
Хотя нет.
...
Рейтинг: 0 / 0
20.03.2019, 14:34
    #39789066
m7m
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
20.03.2019, 15:02
    #39789092
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему так тормозит запрос?
Старый плюшевый мишкаА на хрена там вообще вложенный запрос?
Чтобы взять 1000 первых мастеров, а не произведений мастеров с деталями.))
...
Рейтинг: 0 / 0
20.03.2019, 15:24
    #39789109
kdv
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
20.03.2019, 15:25
    #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
20.03.2019, 15:32
    #39789116
Старый плюшевый мишка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему так тормозит запрос?
Vlad FСтарый плюшевый мишкаА на хрена там вообще вложенный запрос?
Чтобы взять 1000 первых мастеров, а не произведений мастеров с деталями.))

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

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

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

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

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


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