1.
Select Count(*) From [접속자기록_테이블] Where
referer Like '%naver.com%' and accessdate Between '2011-06-29' And '2011-06-29 23:59:59'
2.
Select Count(*) From [접속자기록_테이블] Where
accessdate >= '2011-06-29' And accessdate<= '2011-06-29 23:59:59' And Charindex(referer, 'naver.com') > 0
3.
Select isNull(sum(CASE WHEN charindex('naver.com', referer)=0 THEN 0 ELSE 1 END), 0) Where accessdate Between '2011-06-29' And '2011-06-29 23:59:59'
즉 2번의 경우 Like문대신 CharIndex로 검색, Between 대신 <, > 으로 검색
더 심화해서 Count(*) 부분에서 조건의 문자열찾기 부분을 위방식처럼 하여 갯수를 찾는 거 같은데요
Count(*) 나 Sum () 이나 둘다 집계 함수인데 속도가 많이 차이나는 지요? 제가 대용량데이타가 없는 관계로 확인을 못하는 관계로
여쭤봅니다.
Where 절보다 Select 절에서 처리하는 게 낫다는 의미인가요?
Comment 1
-
항해자™
2014.01.10 22:26
도메인 네임으로 필터해야 된다면 데이터를 마이그레이션하고 저장할 때 도메인만 따로 저장해서 검색하는 것을 추천합니다,,,