카테고리 없음

[mysql] MySQL-인덱싱 할 열을 어떻게 알 수 있습니까?

행복을전해요 2021. 1. 27. 00:29

먼저 쿼리를 다음과 같이 단순화 할 수 있습니다.

SELECT a.ORD_ID AS Manual_Added_Orders,
 a.ORD_poOrdID_List AS Auto_Added_Orders,
  a.ORDPOITEM_ModelNumber,
   a.ORDPO_Number,
    a.ORDPOITEM_ID,
     SUM(ORDPOITEM_Qty) AS ORDPOITEM_Qty
      a.ORDPO_TrackingNumber,
       a.ORDPOITEM_Received,
        a.ORDPOITEM_ReceivedQty,
         a.ORDPOITEM_ReceivedBy,
          b.ORDPO_ID
          FROM orderpoitems a
          LEFT JOIN orderpo b ON (a.ORDPO_Number = b.ORDPO_Number)
          WHERE a.ORDPO_Number = 123007
          GROUP BY a.ORDPOITEM_ModelNumber
          ORDER BY a.ORD_poOrdID_List, a.ORD_ID
          

둘째로 나는에 인덱스를 생성하여 시작하는 것 orderpoitems.ORDPO_Numberorderpo.ORDPO_number

테이블 구조 없이는 말하기 어렵습니다.

-------------------

인덱스 및 커버링 인덱스 읽기

당신이 가지고있는 것에서 where 절에있는 것부터 시작하고 기준을 다른 테이블에 결합하십시오. 또한 가능하고 실용적인 경우, 질의를 마칠 때 일반적으로 질의 기준으로 그룹화 / 주문 기준으로 사용되는 열을 포함합니다.

즉, OrderPOItems 테이블에 색인이 있습니다.

(ordpo_number, orderpoitem_ModelNumber, ord_poordid_list, ord_id)

이렇게하면 FIRST 요소가 WHERE 절에 도달합니다. 다음은 데이터 그룹화 열, 마지막으로 주문 기준 열입니다. 이렇게하면 반환되는 나머지 열에 대한 원시 데이터 페이지로 이동할 필요없이 인덱스에서만 조인 및 자격을 부여하는 구성 요소를 "검증"할 수 있습니다. 시나리오에 맞는 좋은 시작이 되길 바랍니다.



출처
https://stackoverflow.com/questions/22029800