nvarchar 검색 속도 차이? 0 3 870

by 열심열심 [2018.01.02 10:04:26]


A_date는 nvarchar 입니다.

A_date와 no를 그룹핑 하여 그룹바이 합계를를 아래와 같이 구하고 습니다. 

GROUP BY ROLLUP(SUBSTR(A_DATE, 0, 4), no)

여기서 궁금한게 싱글쿼텐션 감싸서 그룹바이 조회 하나요? 

몇십만건중에 2개 찾는데 a_date값에 싱글쿼텐션 주고 안주고 차이가 

수십배나 나길래 의문이 드네요 

ex select ~ from A where a_date=20180102 -> 4초

select ~ from A where a_date='20180102' -> 0.01초

속도 개선 가능할까요

by 마농 [2018.01.02 10:14:43]

서로 다른 자료형을 비교할 때는 서로 형을 맞추어 비교합니다.
문자 숫자 비교시엔 자동으로 문자를 숫자로 바꾸어 비교합니다.
컬럼이 조건의 자료형에 맞게 가공되는 거죠. 이는 바람직하지 않습니다.
컬럼을 가공하면 인덱스가 있어도 인덱스를 사용하지 못합니다.
컬럼은 그대로 둔채 조건값을 컬럼의 자료형에 맞게 가공하는 주는 것이 바람직합니다.
결론 : 따옴표 붙여주세요.


by 열심열심 [2018.01.02 13:17:52]

DECODE(GROUPING(SUBSTR(A_DATE, 0, 4) , 1 'xx', 이런식으로 select되고 

각 컬럼별로 sum되는 쿼리인데 

롤업되는데 이때 ''들어간 상태로 통계가 나올까요? 

타 db에 비해 오라클만 너무 느리네요. 

티베로나 마리아 쓰면 1초 이내인데 오라클만 4초 이상 찍혀서

 


by 마농 [2018.01.02 14:21:15]

음...
Where 절의 조건절에 따옴표 사용유무에 따른 속도차이에 대해 답변 드렸는데요...
grouping 과 decode 때문에 느릴 것 같진 않은데요?

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