K
K
kyja2020-06-13 19:45:34
MySQL
kyja, 2020-06-13 19:45:34

What indexes should be added to the query?

Tell me what indexes need to be added to get rid of
Using filesort

The query itself

EXPLAIN EXTENDED 
SELECT 
  SQL_NO_CACHE DISTINCT BE.ID as ID 
FROM 
  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 
  INNER JOIN b_iblock_7_index FC ON FC.ELEMENT_ID = BE.ID 
  LEFT JOIN b_catalog_product as PRD ON (PRD.ID = BE.ID) 
WHERE 
  1 = 1 
  AND (
    (
      FC.SECTION_ID = 2 
      AND FC.FACET_ID = 1 
      AND FC.VALUE_NUM = 0 
      AND FC.VALUE IN (0)
    ) 
    AND (BE.PREVIEW_PICTURE IS NOT NULL) 
    AND (
      EXISTS (
        SELECT 
          IBLOCK_ID 
        FROM 
          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 = '7')
  ) 
  AND (
    BE.WF_STATUS_ID = 1 
    AND BE.WF_PARENT_ELEMENT_ID IS NULL
  ) 
  AND (
    B.ID IN (
      SELECT 
        IBLOCK_ID 
      FROM 
        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 
          ER.ELEMENT_ID 
        FROM 
          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 
        WHERE 
          ER.ELEMENT_ID = BE.ID 
          AND IBR.OP_EREAD = 'Y'
      )
    )
  ) 
ORDER BY 
  BE.ID DESC 
LIMIT 
  3


EXPLAIN

5ee5008a5409f400597300.png
Extra tables BE
5ee500fa637a7343029025.png

Answer the question

In order to leave comments, you need to log in

1 answer(s)
L
Lazy @BojackHorseman MySQL, 2020-06-13
Tag

no index will help. need to reformulate the request

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question