SELECT o.ofc_id, o.ofc_joiningrank,o.ofc_gender, ofc_mobile,o.ofc_name,o.ofc_dateofbirth,o.ofc_officercode,
o.ofc_joiningrank, (
SELECT CONCAT(w.wng_name, ', ', d.dst_name) FROM tbl_posts p
LEFT JOIN tbl_district_unit d ON (p.pos_dst_id = d.dst_id)
LEFT JOIN tbl_wings w ON (p.pos_wng_id = w.wng_id)
LEFT JOIN tbl_cadre c ON (p.pos_cdr_id = c.cdr_id)
LEFT JOIN tbl_grades g ON (p.pos_grd_id = g.grd_id)
WHERE p.pos_id = a.apt_pos_id) as posting,
r.rnk_abbreviation,r.rnk_grade,r.rnk_name,
g.grd_name, t.ptp_name,d.dst_name AS post_district, w.wng_name, c.cdr_name,
p.pos_sortid, p.pos_status, p.pos_id,p.pos_parent_id,
a.apt_id, a.apt_name, a.apt_startdate,a.apt_ptp_id,a.apt_pos_id, a.apt_enddate ,p.post_name,
tbr.rgn_name,edu.edu_degree,
(select dst_name from tbl_district_unit where dst_id = o.ofc_district) as homedistrict,
(select grd_name from tbl_grades where grd_id = p.pos_grd_id) as postgrade,
(select rnk_name from tbl_ranks where o.ofc_joiningrank = rnk_id) as joiningrank
FROM tbl_posts p
LEFT JOIN tbl_appointments a ON (a.apt_pos_id = p.pos_id)
LEFT JOIN tbl_officer o ON (a.apt_ofc_id = o.ofc_id)
LEFT JOIN tbl_district_unit d ON (p.pos_dst_id = d.dst_id)
LEFT JOIN tbl_regions tbr ON (tbr.rgn_id = d.dst_rgn_id)
LEFT JOIN tbl_wings w ON (p.pos_wng_id = w.wng_id)
LEFT JOIN tbl_cadre c ON (p.pos_cdr_id = c.cdr_id)
LEFT JOIN tbl_ranks r ON (a.apt_rnk_id = r.rnk_id)
LEFT JOIN tbl_education edu ON (edu.edu_ofc_id = o.ofc_id)
LEFT JOIN tbl_grades g ON (a.apt_grd_id = g.grd_id)
LEFT JOIN tbl_postingtype t ON (a.apt_ptp_id = t.ptp_id)
WHERE tbr.rgn_id = ('" . $regionID . "')
order by p.pos_sortid ASC");
Этот запрос занимает слишком много времени, так как я выполняю этот запрос в цикле примерно для 20 регионов. Поэтому для каждой области этот запрос выполняется. Индексы уже размещены. Как оптимизировать любое решение?Запрос занимает слишком много времени. Требуется помощь
магии восемь мячей говорят: результат маловероятен. magic eight ball также говорит, что добавить всю схему таблицы, план объяснения запроса и индексы из каждой таблицы в запросе. –
@pala_ в основном правильный. Это сложный запрос. Трудно понять, насколько это оптимально, если вы не знаете, что * много больше о ваших данных - сколько строк в таблицах, индексах, планах выполнения и т. Д. Читайте http://use-the-index-luke.com/ Попробуйте удалить предложение WHERE ... rgn_id', упорядочивание 'rgn_id' и выполнение запроса только один раз. –