Всем доброго времени суток столкнулся с проблемой идет сильная нагрузка на базу данных ниже запрос, как его можно оптимизировать для нормально работы сайта:
SEL ECT DISTINCT [URL=http://bs.id/]BS.ID[/URL] AS ID,
BS.CODE AS CODE,
[URL=http://bs.name/]BS.NAME[/URL] AS NAME,
BS.DEPTH_LEVEL AS DEPTH_LEVEL,
BS.DESCRIPTION AS DESCRIPTION,
BS.DESCRIPTION_TYPE AS DESCRIPTION_TYPE,COUNT(DISTINCT [URL=http://be.id/]BE.ID[/URL]) as ELEMENT_CNT
FR OM b_iblock_section BS
INNER JOIN b_iblock B ON BS.IBLOCK_ID = [URL=http://b.id/]B.ID[/URL]
INNER JOIN b_iblock_section BSTEMP ON BSTEMP.IBLOCK_ID = BS.IBLOCK_ID
LEFT JOIN b_iblock_section_element BSE ON BSE.IBLOCK_SECTION_ID=[URL=http://bstemp.id/]BSTEMP.ID[/URL]
LEFT JOIN b_iblock_element BE ON (BSE.IBLOCK_ELEMENT_ID=[URL=http://be.id/]BE.ID[/URL]
AND ((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL )
AND BE.IBLOCK_ID = BS.IBLOCK_ID
)
)
WHERE 1=1
AND BSTEMP.IBLOCK_ID = BS.IBLOCK_ID
AND BSTEMP.LEFT_MARGIN >= BS.LEFT_MARGIN
AND BSTEMP.RIGHT_MARGIN <= BS.RIGHT_MARGIN
AND ((((BS.IBLOCK_ID = '7'))))
AND (((([URL=http://b.id/]B.ID[/URL] = '7'))))
AND ((
[URL=http://b.id/]B.ID[/URL] IN (
SEL ECT IBLOCK_ID
FR OM b_iblock_group IBG
WHERE 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 SR.SECTION_ID
FR OM b_iblock_section_right SR
INNER JOIN b_iblock_right IBR ON [URL=http://ibr.id/]IBR.ID[/URL] = SR.RIGHT_ID
INNER JOIN b_user_access UA ON UA.ACCESS_CODE = IBR.GROUP_CODE AND UA.USER_ID = 0
WH ERE SR.SECTION_ID = [URL=http://bs.id/]BS.ID[/URL]
AND IBR.OP_SREAD = 'Y'
))
))
GROUP BY [URL=http://bs.id/]BS.ID[/URL], [URL=http://b.id/]B.ID[/URL]
SEL ECT DISTINCT [URL=http://bs.id/]BS.ID[/URL] AS ID,
BS.CODE AS CODE,
[URL=http://bs.name/]BS.NAME[/URL] AS NAME,
BS.DEPTH_LEVEL AS DEPTH_LEVEL,
BS.DESCRIPTION AS DESCRIPTION,
BS.DESCRIPTION_TYPE AS DESCRIPTION_TYPE,COUNT(DISTINCT [URL=http://be.id/]BE.ID[/URL]) as ELEMENT_CNT
FR OM b_iblock_section BS
INNER JOIN b_iblock B ON BS.IBLOCK_ID = [URL=http://b.id/]B.ID[/URL]
INNER JOIN b_iblock_section BSTEMP ON BSTEMP.IBLOCK_ID = BS.IBLOCK_ID
LEFT JOIN b_iblock_section_element BSE ON BSE.IBLOCK_SECTION_ID=[URL=http://bstemp.id/]BSTEMP.ID[/URL]
LEFT JOIN b_iblock_element BE ON (BSE.IBLOCK_ELEMENT_ID=[URL=http://be.id/]BE.ID[/URL]
AND ((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL )
AND BE.IBLOCK_ID = BS.IBLOCK_ID
)
)
WHERE 1=1
AND BSTEMP.IBLOCK_ID = BS.IBLOCK_ID
AND BSTEMP.LEFT_MARGIN >= BS.LEFT_MARGIN
AND BSTEMP.RIGHT_MARGIN <= BS.RIGHT_MARGIN
AND ((((BS.IBLOCK_ID = '7'))))
AND (((([URL=http://b.id/]B.ID[/URL] = '7'))))
AND ((
[URL=http://b.id/]B.ID[/URL] IN (
SEL ECT IBLOCK_ID
FR OM b_iblock_group IBG
WHERE 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 SR.SECTION_ID
FR OM b_iblock_section_right SR
INNER JOIN b_iblock_right IBR ON [URL=http://ibr.id/]IBR.ID[/URL] = SR.RIGHT_ID
INNER JOIN b_user_access UA ON UA.ACCESS_CODE = IBR.GROUP_CODE AND UA.USER_ID = 0
WH ERE SR.SECTION_ID = [URL=http://bs.id/]BS.ID[/URL]
AND IBR.OP_SREAD = 'Y'
))
))
GROUP BY [URL=http://bs.id/]BS.ID[/URL], [URL=http://b.id/]B.ID[/URL]