Как найти метод с медленным запросом к БД и как сократить время выполнения?, При мониторенге производительности быил выявлены медленые запросы к БД и из них большенство хитов это картинки.
При мониторенге производительности быил выявлены медленые запросы к БД и из них большенство хитов это картинки. Скриншот
Как найти какой именно метод так нагружает БД?
Приведу сам проблемный запрос:
Код
SEL ECT
COUNT(DISTINCT
BE.ID) as C
FR OM
b_iblock B
INNER JOIN b_lang L ON
B.LID = L.LID
INNER JOIN b_iblock_element BE ON
BE.IBLOCK_ID = B.ID
WHERE 1 = 1
AND ((
EXISTS (
SEL ECT
IBLOCK_ID
FR OM
b_iblock_site
WHERE
IBLOCK_ID = B.ID
AND (SITE_ID = 's1') ) )
AND ( (
BE.ACTIVE_TO >= now()
OR BE.ACTIVE_TO IS NULL )
AND (BE.ACTIVE_FROM <= now()
OR BE.ACTIVE_FROM IS NULL ) )
AND (BE.ACTIVE = 'Y')
AND (BE.IBLOCK_ID = '2'))
AND (BE.WF_STATUS_ID = 1
AND BE.WF_PARENT_ELEMENT_ID IS NULL )
AND ( B.ID IN (
SELECT IBLOCK_ID
FR OM b_iblock_group IBG
WH ERE IBG.GROUP_ID IN (2)
AND IBG.PERMISSION >= 'R'
AND (
IBG.PERMISSION = 'X'
OR B.ACTIVE = 'Y'
))
OR (
B.RIGHTS_MODE = 'E'
AND EXISTS (
SELECT
ER.ELEMENT_ID
FR OM
b_iblock_element_right ER
INNER JOIN b_iblock_right IBR ON
IBR.ID = ER.RIGHT_ID
INNER JOIN b_user_access UA ON
UA.ACCESS_CODE = IBR.GROUP_CODE
AND UA.USER_ID = 0
WH ERE
ER.ELEMENT_ID = BE.ID
AND IBR.OP_EREAD = 'Y'
) )
)
Тут много вложенных уловий, как можно это сократить?