궁금해요 쿼리 질문!! 0 3 1,863

by 히로스에료짱 [SQL Query] [2012.11.04 16:06:33]



안녕하세요.

궁금한게 있어서 이렇게 질문을 드립니다.
1.
select *
from toad
where date between '20121001' and '20121031'

2.select *
from toad
where data like '201210%'

두개중 어느게 더 빠르게 검색이 되나요?
항상 29 30 31 이것 때문에 달력을 많이 봐서
ㅜㅡㅠ



by 아발란체 [2012.11.04 20:32:52]

색인이 있든 없든 속도는 같습니다.


by 마농 [2012.11.05 08:36:42]

위의 조건 하나만 보면 차이가 없다고 볼 수 있습니다.
그러나 추가 조건이 있다고 가정하면 차이가 있습니다.
Index 구성은 (date, code) 라고 가정합니다. code()
-- 1. Between 은 인덱스 스캔시 ('20121031', 'A') 까지 읽고 'B' 이후는 읽지 않습니다.
WHERE date BETWEEN '20121001' AND '20121031'
  AND code = 'A'
;
-- 2. Like 는 코드에 상관 없이 '20121031' 에 해당하는 인덱스를 모두 읽습니다.
WHERE date LIKE '201210%'
  AND code = 'A'
;
하지만 그 차이는 아주 미미하다고 볼 수 있습니다.
인덱스 스캔의 양이 차이나는 것이지 테이블 스캔의 양은 동일합니다.
아주 특이한 경우를 제외하고는 거의 같다고 봐도 되겠습니다.
(대용량에서 'A' 가 아주 적고 나머지 코드가 아주 많은 경우)


by 아발란체 [2012.11.05 09:30:13]

역시 답변 레벨이 달라... ㅡ ㅁ ㅡ)/

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