|
|
|
Почему inner join внутри подзапроса так сильно замедляет весь запрос?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Подскажите, почему INNER JOIN внутри подзапроса может так сильно замедлять весь запрос? Сейчас запрос выглядит так: SELECT o.id_field, attr_73206_ AS attr_73270_ FROM object_73130_ f1 LEFT OUTER JOIN ( SELECT id_field, attr_73206_ FROM ( SELECT m.id_field, t0.attr_73102_ AS attr_73206_ FROM object_73200_ o INNER JOIN master_slave m ON (m.id_object = 73130 OR m.id_object = 73290) AND (m.id_master = 73200 OR m.id_master = 73354) AND m.id_slave_field = o.id INNER JOIN object_73101_ t0 ON t0.id = o.attr_73206_ ORDER BY o.id_order ) AS o GROUP BY o.id_field ) AS o ON f1.id = o.id_field На сравнительно небольших таблицах, не превышающих 2 тыс. записей он выполняется за 12 секунд. Сам подзапрос выполняется за доли секунды. И что самое интересное, если переписать запрос и сделать так: SELECT t0.attr_73102_ AS attr_73270_ FROM object_73130_ f1 LEFT OUTER JOIN ( SELECT id_field, attr_73206_ FROM ( SELECT m.id_field, attr_73206_ FROM object_73200_ o INNER JOIN master_slave m ON (m.id_object = 73130 OR m.id_object = 73290) AND (m.id_master = 73200 OR m.id_master = 73354) AND m.id_slave_field = o.id ORDER BY o.id_order ) AS o GROUP BY o.id_field ) AS o ON f1.id = o.id_field LEFT JOIN object_73101_ t0 ON t0.id = o.attr_73206_ то он выполняется за доли секунды. То есть все дело в INNER JOIN внутри подзапроса. Так вот, почему он так сильно влияет на весь запрос, увеличивая время исполнения с долей секунды до 12 секунд? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 00:14:41 |
|
||
|
Почему inner join внутри подзапроса так сильно замедляет весь запрос?
|
|||
|---|---|---|---|
|
#18+
Jacobian, а планы, планы-то где? Без них можно только предполагать, что в первом случае таблица, которую вы лефтджойните ("о", внешняя), получается большой, а во втором - маленькой. А поскольку это временная таблица, то время её левого присоединения может очень сильно зависеть от кол-ва записей в ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2013, 08:24:18 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=210&tid=1836138]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 203ms |
| total: | 348ms |

| 0 / 0 |
