쿼리속도 질문드리겠습니다. 0 6 938

by 밍밍밍밍 [MySQL] mysql 쿼리속도 [2018.02.09 15:45:27]


SELECT 
			A.CNO AS cNo, 
			A.KNO AS kNo, 
			A.ASSOCIATION AS association, 
			A.AGROUP AS aGroup, 
			A.CARDWRITER AS cardWriter, 
			A.USERNAME AS userName,
			A.BIRTH AS birth, 
			IF(LEFT(NOW(),10)>BIRTH,LEFT(NOW(),4)-LEFT(BIRTH,4),LEFT(NOW(),4)-LEFT(BIRTH,4)-1) AS AGE,
			A.PHONE1 AS phone1, 
			A.PHONE2 AS phone2,
			A.PHONE3 AS phone3,
			B.SUBNAME AS subName, 
			A.SENIORJOIN AS seniorJoin, 
			A.ZIP AS zip, 
			A.ADDR1 AS addr1, 
			A.ADDR2 AS addr2, 
			A.TEL1 AS tel1, 
			A.TEL2 AS tel2, 
			A.TEL3 AS tel3, 
			A.SEX, 
			CASE A.SEX
	        WHEN 'M' THEN '남'
	        WHEN 'F' THEN '여'
	        ELSE A.SEX
	        END GENDER,
			A.USERTYPE, 
			CASE A.USERTYPE
	        WHEN 'S' THEN '정회원'
	        WHEN 'T' THEN '특별회원'
	        ELSE A.USERTYPE
	        END userTypeNm,
			A.DEMENTIA AS dementia, 
			A.DEMENTIAGRADE AS dementiaGrade, 
			A.DELYN AS delYn,
			A.WRID AS wrid, 
			DATE_FORMAT(A.WRDT, '%Y-%m-%d') AS wrdt
			FROM 
				users_card A LEFT JOIN sub_card B ON A.KNO = B.KNO AND B.DELYN = 'N'
			WHERE A.DELYN = 'N'
 
   		
      ORDER BY CNO DESC 

 

users_card 와 sub_card를 조인해서 select하는 쿼리입니다.

user_card에는 200만건

sub_card에는 6만건의 데이터가 들어있습니다.

인덱스는 검색되는 컬럼은 걸어줬습니다.

조건없이 총 검색을 하게되면 쿼리속도가 1분이 넘어가는데..

쿼리속도를 빠르게하고싶어서 질문남김니다..

어떤식으로 수정을 해야할지 답변좀 부탁드리겠습니다.

by 우리집아찌 [2018.02.09 15:58:23]

조회건수가 200만건이 넘어가는데 당연히 느릴듯합니다.

PAGING 을 해서 화면에 조회되는 건수를 줄여보심이 어떻까요?

CNO 는 INDEX가 DESC 설정되어있나요?


by 밍밍밍밍 [2018.02.09 16:00:37]

넵 조회쿼리는 10건씩 페이징으로 조회를 합니다.

CNO는 PK인데 INDEX도 따로걸여줘야하나요??

INDEX도 걸어보겠습니다.


by 우리집아찌 [2018.02.09 16:30:22]

PK 이시면 하실 필요없습니다.


by 마농 [2018.02.09 16:08:43]

조인되는 컬럼에도 인덱스가 있어야 합니다.
조인되는 컬럼이 PK 라면? 즉, (1:1 또는 다:1) 관계라면?
조인 후 페이징이 아닌 페이징 후 조인으로 바꾸세요.


by 밍밍밍밍 [2018.02.09 16:19:58]

페이징 후 조인으로 수정해보겠습니다.


by 마농 [2018.02.09 17:04:36]

나이 계산 IF 문도 틀렸네요.
IF(LEFT(NOW(),10)>BIRTH 이 조건은 항상 참(TRUE) 일 수 밖에 없습니다.
"년월일" 비교가 아닌 년도를 뺀 "월일"만 가지고 비교해야죠.

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