쿼리문 속도를 개선하고 싶습니다. 0 2 1,143

by 제페토 [SQL Query] mysql join concat [2022.02.07 16:53:00]


예시)

SELECT a.data1, a.data2, a.key, b.data1 FROM table_a a JOIN (SELECT CONCAT(col_a, "-", col_b) key, data1 FROM table_b) b USING(key)

 

이런 형식의 쿼리가 있는데, 데이터량은 약 10만개 가량이 있습니다.

쿼리문은 실제로 더 길구요.

저기서 CONCAT함수가 있는 JOIN을 빼고 검색을 하면 약 37ms가 나오지만,

CONCAT함수로 JOIN을 하면 560ms가 나옵니다.

 

CONCAT을 이용해 JOIN을 하는 이유는 table_b에 있는 data1 값 하나를 불러오기 위해서 입니다.

저거 하나로 속도가 20배 가까이 나오는데 너무 답답해서 질문 드립니다 ㅠㅠ

by 우리집아찌 [2022.02.07 17:48:32]

인덱스를 사용못해서 그렇습니다 위 말씀만으로는 정보가 부족하고 샘플 대이터랑 인덱스 정보를 올려주세요


by 마농 [2022.02.07 17:59:52]
SELECT a.data1
     , a.data2
     , a.key
     , b.data1
  FROM table_a a
 INNER JOIN table_b b
    ON b.col_a = SUBSTRING_INDEX(a.key, '-',  1)
   AND b.col_b = SUBSTRING_INDEX(a.key, '-', -1)
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입