sql - MySQL Join and Union Optimization -
i have sql , goes thought, guess there better way write in order avoid repetitive sentences , increase performance.
any suggestions?
create or replace view tx_oriconvocatorias_consultas select pubs.*, pais.nombre_es area, group_concat(distinct linea_es order linea_es separator '\n') linea_es, group_concat(distinct modalidad_es order modalidad_es separator '\n') modalidad_es, group_concat(distinct orgs.nombre_es order orgs.nombre_es separator '\n') organizacion_es tx_oriconvocatorias_publicadas pubs inner join tx_oriconvocatorias_publicadas_lineas_mm ml on ml.uid_local=pubs.uid inner join tx_oritablascomunes_lineas lins on ml.uid_foreign=lins.uid inner join tx_oriconvocatorias_publicadas_modalidades_mm mm on mm.uid_local=pubs.uid inner join tx_oritablascomunes_modalidades mods on mm.uid_foreign=mods.uid inner join tx_oriconvocatorias_publicadas_organizaciones_mm mo on mo.uid_local=pubs.uid inner join tx_oritablascomunes_organizaciones orgs on mo.uid_foreign=orgs.uid inner join tx_oritablascomunes_paises pais on pubs.carea = concat('tx_oritablascomunes_paises_',pais.uid) group uid union select pubs.*, regs.nombre_es area, group_concat(distinct linea_es order linea_es separator '\n') linea_es, group_concat(distinct modalidad_es order modalidad_es separator '\n') modalidad_es, group_concat(distinct orgs.nombre_es order orgs.nombre_es separator '\n') organizacion_es tx_oriconvocatorias_publicadas pubs inner join tx_oriconvocatorias_publicadas_lineas_mm ml on ml.uid_local=pubs.uid inner join tx_oritablascomunes_lineas lins on ml.uid_foreign=lins.uid inner join tx_oriconvocatorias_publicadas_modalidades_mm mm on mm.uid_local=pubs.uid inner join tx_oritablascomunes_modalidades mods on mm.uid_foreign=mods.uid inner join tx_oriconvocatorias_publicadas_organizaciones_mm mo on mo.uid_local=pubs.uid inner join tx_oritablascomunes_organizaciones orgs on mo.uid_foreign=orgs.uid inner join tx_oritablascomunes_regiones regs on pubs.carea = concat('tx_oritablascomunes_regiones_',regs.uid) group uid
yes. use view collect sql common both queries:
create view pub_orgs select * tx_oriconvocatorias_publicadas pubs inner join tx_oriconvocatorias_publicadas_lineas_mm ml on ml.uid_local=pubs.uid inner join tx_oritablascomunes_lineas lins on ml.uid_foreign=lins.uid inner join tx_oriconvocatorias_publicadas_modalidades_mm mm on mm.uid_local=pubs.uid inner join tx_oritablascomunes_modalidades mods on mm.uid_foreign=mods.uid inner join tx_oriconvocatorias_publicadas_organizaciones_mm mo on mo.uid_local=pubs.uid inner join tx_oritablascomunes_organizaciones orgs on mo.uid_foreign=orgs.uid;
then build unioned queries this
Comments
Post a Comment