Trike
Новичок
Проблема с производительность работы VIEW
Доброго времени суток.
В проекте активно используются представления. С недавнего времени на небольшой таблице появились тормоза (6-7 секунд на запрос).
EXPLAIN показал такие интересные результаты:
EXPLAIN SELECT *
FROM `view`
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 5076
2 DERIVED l ALL NULL NULL NULL NULL 5079 Using temporary; Using filesort
2 DERIVED t eq_ref PRIMARY PRIMARY 4 ozd.l.id_ed_izm 1
2 DERIVED r eq_ref PRIMARY PRIMARY 4 ozd.l.id_class 1
Исходный запрос же в этом случае работает 0.001 cекунды и выглядит так:
EXPLAIN SELECT *
FROM lap AS l
LEFT JOIN types AS t ON l.id_ed = t.id
LEFT JOIN razd AS r ON l.id_class = r.id
GROUP BY l.id
1 SIMPLE l ALL NULL NULL NULL NULL 5079 Using temporary; Using filesort
1 SIMPLE t eq_ref PRIMARY PRIMARY 4 ozd.l.id_ed_izm 1
1 SIMPLE r eq_ref PRIMARY PRIMARY 4 ozd.l.id_class 1
То есть VIEW подключает одну таблицу 2 раза полностью.
Погуглив, узнал, что подобная проблема проявляется только при использовании GROUP BY .
После проверки, собственно, это и подтвердилось.
Вопрос, есть ли какой-нибудь способ обойти этот баг с GROUP BY или проще переписать скрипт без использования VIEW ?
Доброго времени суток.
В проекте активно используются представления. С недавнего времени на небольшой таблице появились тормоза (6-7 секунд на запрос).
EXPLAIN показал такие интересные результаты:
EXPLAIN SELECT *
FROM `view`
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 5076
2 DERIVED l ALL NULL NULL NULL NULL 5079 Using temporary; Using filesort
2 DERIVED t eq_ref PRIMARY PRIMARY 4 ozd.l.id_ed_izm 1
2 DERIVED r eq_ref PRIMARY PRIMARY 4 ozd.l.id_class 1
Исходный запрос же в этом случае работает 0.001 cекунды и выглядит так:
EXPLAIN SELECT *
FROM lap AS l
LEFT JOIN types AS t ON l.id_ed = t.id
LEFT JOIN razd AS r ON l.id_class = r.id
GROUP BY l.id
1 SIMPLE l ALL NULL NULL NULL NULL 5079 Using temporary; Using filesort
1 SIMPLE t eq_ref PRIMARY PRIMARY 4 ozd.l.id_ed_izm 1
1 SIMPLE r eq_ref PRIMARY PRIMARY 4 ozd.l.id_class 1
То есть VIEW подключает одну таблицу 2 раза полностью.
Погуглив, узнал, что подобная проблема проявляется только при использовании GROUP BY .
После проверки, собственно, это и подтвердилось.
Вопрос, есть ли какой-нибудь способ обойти этот баг с GROUP BY или проще переписать скрипт без использования VIEW ?