我有下面的查询,从中我得到了预期的结果,问题是返回数据需要很长时间,我知道慢是由于下面的行
(select fecha_hora
from horas
where horas.consulta_id = consultas.id
AND fecha_hora >= NOW()
AND horas.estado = 0
ORDER BY fecha_hora limit 0, 1) as hora
我不知道怎么解决它。
目标是获得最接近医生实际可用日期的日期和时间(有些医生没有可用日期)
select `medicos`.`id` as `med_id`
, `medicos`.`estado` as `med_estado`
, `medicos`.`descripcion`
, `clinicas`.`nombre` as `cli_nombre`
, `clinicas`.`direccion` as `cli_direccion`
, `regiones`.`nombre` as `region`
, `comunas`.`nombre` as `comuna`
, (select fecha_hora
from horas
where horas.consulta_id = consultas.id
AND fecha_hora >= NOW()
AND horas.estado = 0
ORDER BY fecha_hora
limit 0, 1) as hora
from `consultas`
inner join `consulta_especialidad`
on `consulta_especialidad`.`consulta_id` = `consultas`.`id`
inner join `especialidades`
on `especialidades`.`id` = `consulta_especialidad`.`especialidad_id`
inner join `medicos`
on `medicos`.`id` = `consultas`.`medico_id`
inner join `clinicas`
on `clinicas`.`id` = `consultas`.`clinica_id`
inner join `regiones`
on `regiones`.`id` = `clinicas`.`region_id`
inner join `comunas` on `comunas`.`id` = `clinicas`.`comuna_id`
where `medicos`.`estado` != 5
and `clinicas`.`region_id` = 15
and `especialidades`.`id` = 116
group by `medicos`.`id`
order by `medicos`.`estado` desc
, -`hora` desc, `medicos`.`nombres` asc
, `medicos`.`apellidos` asc
1条答案
按热度按时间pxq42qpu1#
没有答案。评论时间太长。。。
fwiw,我觉得这更容易阅读。。。
观察:您有一个GROUPBY子句,但没有聚合函数。这是灾难的秘诀。