Мое представление mysql очень медленно в тысячах данных, как мы можем улучшить эту функциональность?Вид Mysql очень медленный
При получении этого представления в данных 10000s он занимает больше 30 секунд. как мы можем пересмотреть эту таблицу представлений?
SELECT
i.jo_in_id,
j.*,
i.jo_in_week_number,
i.jo_in_client_ref_no,
i.cl_id AS jo_in_cl_id,
c.cl_short_name,
c.cl_business_name,
m.me_first_name,
m.me_last_name,
m.me_mobile,
sk.sk_name,
sk.sk_ticketed,
ti.ti_id,
ta.ta_name,
u.un_id,
u.un_from,
u.un_to,
v.ve_name,
mp.vmp_name,
r.vr_name
FROM
jo_2_no j2n,
jo_in_numbers i,
jobs j
LEFT JOIN venues_new v ON j.ve_id = v.ve_id
LEFT JOIN venues_meeting_place mp ON j.vmp_id = mp.vmp_id
LEFT JOIN venues_rooms r ON j.vr_id = r.vr_id
LEFT JOIN clients c ON j.cl_id = c.cl_id
LEFT JOIN members m ON j.me_id = m.me_id
LEFT JOIN skills sk ON j.sk_id = sk.sk_id
LEFT JOIN tasks ta ON j.ta_id = ta.ta_id
LEFT JOIN crew_tickets ti ON j.sk_id = ti.sk_id AND j.me_id = ti.me_id AND j.jo_time_off < ti.ti_expire
LEFT JOIN unavailability u ON j.me_id = u.me_id AND ((j.jo_time_on BETWEEN u.un_from AND u.un_to) OR (j.jo_time_on BETWEEN u.un_from AND u.un_to))
WHERE
j.jo_id = j2n.jo_id
AND j2n.jo_in_numbers_id = i.jo_in_id
ПОСЛЕ пользователя EXPLAIN SELECT
Ниже приведен результат
У вас есть какие-либо индексы на столбцах соединения? Кроме этого, вы можете прекратить использование представлений, которые, как правило, медленны. –
@TimBiegeleisen Просмотров не медленнее или быстрее, чем другие запросы. – arkascha
Основной причиной, скорее всего, является тот факт, что вы объединяете много таблиц. Это медленно. Вы можете попытаться ускорить процесс с соответствующими индексами, но только до сих пор. По крайней мере, попытайтесь обойти использование «comma join», используемого для первых трех таблиц, которое _really_ раздувает временную таблицу, созданную для набора результатов. Чем больше этот набор, тем медленнее запрос. Но в конечном итоге вы должны переконфигурировать свою базу данных, чтобы упростить запросы (представления) – arkascha