위의 조건 하나만 보면 차이가 없다고 볼 수 있습니다.
그러나 추가 조건이 있다고 가정하면 차이가 있습니다.
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' 가 아주 적고 나머지 코드가 아주 많은 경우)