쿼리속도 0 6 501

by 지피지기 [MySQL] [2018.08.28 10:52:04]


안녕하세요.

고수님들께 쿼리속도에 관련된 조언을 구하고자합니다.

간단한 쿼리인데 속도가 너무 안나오네요 ㅡㅡ

아래와 같은 간단 쿼리입니다.

select count(distinct ww.pcode) as total
  from product ww, relation wr
 where ww. pcode != '' and  wr.pcode  = ww.pcode

34만여건정도인데 로딩속도가 너무나 느리네요

product <-- 이테이블에 pcode가 pk로 잡혀있구요

relation <-- 이 테이블도 pcode가 인덱스로 잡혀있습니다.

 

무엇이 문제일까요? ㅡㅡ 조언좀 부탁드립니다.

by 우리집아찌 [2018.08.28 11:02:49]
-- 이렇게 하면 문제있을까요?
-- JOIN이 꼭 필요한 경우인가요?

select count(distinct ww.pcode) as total
  from product ww 
 where ww. pcode != '' 

 


by 지피지기 [2018.08.28 11:07:08]

답변감사합니다.

relation 테이블은 product테이블과 관련된 카테고리 테이블이기에 차후 검색기능시 필요로 하기때문에

조인을 시킨겁니다.


by 우리집아찌 [2018.08.28 11:49:46]
-- exists 가 빠른지는 모르지만 한번 테스트해보심이.. 어떨지

select count(ww.pcode) as total
  from product ww
 where exists ( select 'x' from relation wr where wr.pcode  = ww.pcode and wr.pcode > '')

 


by 마농 [2018.08.28 12:15:41]
SELECT COUNT(*) total
  FROM product ww
 WHERE ww.pcode != ''
   AND EXISTS (SELECT 1
                 FROM relation wr
                WHERE wr.pcode  = ww.pcode
               )
;

 


by 지피지기 [2018.08.28 12:53:44]

바쁘실텐데 답변주셔서 감사합니다.

한가지만 더 여쭙고자합니다. 검색기능을 추가할때 검색되는 필드값도 인덱스를 잡아주는게 맞을까요??


by 아발란체 [2018.08.28 14:23:31]

넹. 많은 데이타에서 소량 데이타 검색 할 때 인덱스 안 잡혀있으면 무진장 느립니다!

될 수 있으면 PK(기본키)로 커버 할 수 있음 제일 좋습니다!

데이타가 무진장 많으면 불필요한 인덱스 간섭이 발생합니다.

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