0
У меня есть запрос, который берет навсегда.оптимизация запросов mysql, где vs внутреннее соединение
Я не могу найти способ сделать это быстрее. Я искал интернет для оптимизации трюков, но не нашел anythig, что бы сделать это быстрее.
Может быть, свежим взглядом увидеть что-то, что я не :)
Вот запрос:
Select *, sum(collection) as tot
from
(
SELECT PHYS.PHYS_ID,
month(PMT.DT_PD) as Month,
year(PMT.DT_PD) as Year,
PRAC.LOC_ID,
sum(ABS(PMT.PMT_AMT)) as collection
FROM
IDR_ENC ENC,
IDR_PHYS_PT_XREF PHY_PT,
IDR_PRACT_LOC PRAC,
IDR_PMT PMT,
IDR_PHYS PHYS,
IDR_CHGS CHG
where
ENC.PT_ID = PHY_PT.PT_ID AND
ENC.ENC_LOC = PRAC.LOC_ID AND
PHY_PT.PHYS_ID = PHYS.PHYS_ID AND
PHY_PT.PT_ID = CHG.PT_ID AND
PMT.CHG_ID = CHG.CHG_ID AND
DATE_FORMAT(PMT.DT_PD, '%Y-%m-%d') >= '2014-01-01' and
DATE_FORMAT(PMT.DT_PD, '%Y-%m-%d') <= '2014-03-31' and
PRAC.LOC_ID IN (SELECT LOC_ID FROM IDR_PRACT_LOC WHERE LOC_ID != 0) AND
PHYS.PHYS_ID in (SELECT PHYS_ID FROM IDR_PHYS WHERE PHYS_ID != 0) AND
PMT.TRN_TYP NOT IN ('A', 'B', 'R', 'T') AND
CHG.CPT4_CD NOT LIKE 'J%'
GROUP BY PHYS.PHYS_ID, month(PMT.DT_PD),year(PMT.DT_PD)
)TOT_COLL
group by month,year
Выполняется ли этот запрос? GROUP BY во внутреннем запросе не содержит PRAC.LOC_ID – Multisync
@Multisync, MySQL не строит об этом по умолчанию. Это означает, что PRAC.LOC_ID принимает произвольное значение из группы строк. Разработчик должен разработать запрос для обеспечения этого. –
@Bill Karwin Спасибо за объяснение – Multisync