SUBSTR 과 LIKE 속도?? 0 4 22,105

by 손님 [SQL Query] like substr [2009.08.19 11:16:47]


쓸때 없는 질문 같지만

WHERE 절에 LIKE 와 SUBSTR을 쓰는 것중에 어떤게 더 빠르고 좋을까요?

예를 들면

1. WHERE USER_ID LIKE ’___ABC’||’%’

2. WHERE SUBSTR(USER_ID,4) = ’ABC’

1번, 2번 어떤게 더 빠르고 DB에 무리가 가지 않는걸까요?

제 생각에는 WHERE절 왼쪽부분에 함수쓰는게 좀 느릴꺼 같은데

그닥 차이는 없을것 같지만 갑자기 궁금해서요^^

by 러드 [2009.08.19 11:21:00]
저는 크게 차이는 없다고 보는데!! ^^

어짜피 full scan이라 ㅋㅋ

by 마농 [2009.08.19 11:25:24]
일단은 컬럼을 가공하지 않은 쪽이 좋긴 하겠지만 워낙 간단한거라 그닥 차이나지 않을 거구요.
like 항목에 인덱스가 있고 조건이 중간부터가 아닌 처음부터 찾는 거라면 당연 like가 빠릅니다.

by 러드 [2009.08.19 11:25:57]
뭐 단순하게 테스트 해봤는데

select * from EMP
where empno like '7%'

select * from EMP
where substr(empno,1,1) = '7'

에 대해서 보니까

실행계획에서 cpu cost 값에서 차이가 발생하네요^^

1번 : like -> 40647
2번 : subsr -> 41347

cpu cost 건 뭘 말하는거지?? 단순하게 cpu사용이라고 생각하면 될지?? ㅋㅋ


by 웁스 [2009.08.19 12:50:44]
empno like '7%' 이 like 문과
USER_ID LIKE ’___ABC’||’%’ 이 like 문은 차이가 있습니다..

인덱스가 있다는 가정하에 첫번째 쿼리는 인덱스를 사용할것이고,
두번째는 인덱스를 사용못하기 때문입니다..

그리고 cpu cost 는 옵티마이저가 수행할 sql의 예측 비용이라고 알고있습니다.. 이 부분에대해서는 의견이 너무 분분하여 정확한 답을 드릴수가 없네여...ㅠㅠ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입