쿼리 변경 문의 드립니다. 0 2 569

by Yong [DB 기타] 마리아DB MARIA [2020.11.13 11:26:25]


안녕하세요.

아무리 생각을 해봐도 해결 방법이 떠오르지 않아서 문의 드립니다.

DB는 마리아 DB이고, 하기 쿼리에서 파라미터는 S-089  밖에 없으며, 인덱스는 A.NAME에 하나 A.CODE,A.IS_DELETE에 걸려 있습니다.

FULLTEXT 검색을 생각했는데 변수 설정 권한 있는 계정도 없어서 이건 포기했고요...ㅠ

인덱스를 태우고 싶은데 어떻게 튜닝을 하면 좋을까요?  막연한 질문인데...조언 부탁드립니다.

 

SELECT COUNT(1)
  FROM TEST A
 WHERE 1=1
   AND A.CODE <> 'G9'
   AND A.IS_DELETE = 'N'
   AND IF(A.TYPE = 'AA', IF(A.LANG = 'TT', 'Y', IF(A.LANG = 'CC', 'Y', IF(A.FLAG = 'Y', 'Y', 'N'))), 'Y') = 'Y'
   AND A.NAME LIKE CONCAT('%', UPPER(TRIM('S-089')), '%')

by 마농 [2020.11.13 14:15:54]

어차피 인덱스 이용할 상황은 아니네요.
인덱스 이용하는 방향은 어려울 듯 합니다.
대신 복잡하고 무거운 조건을 단순하게 바꾸는 방향으로 가야 할 것 같습니다.
LIKE 조건은 INSTR 조건으로 변경 가능
복잡한 IF 문은 단순하게 변경
 

SELECT COUNT(*)
  FROM test
 WHERE code != 'G9'
   AND is_delete = 'N'
   AND (type != 'AA' OR lang IN ('TT', 'CC') OR flag = 'Y')
   AND INSTR(name, UPPER(TRIM('S-089'))) > 0
;

 


by Yong [2020.11.13 16:57:23]

답변 너무 감사합니다!!! 도움 많이 됐어요~

좋은 주말 되세요!!

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