다중컬럼을 조회조건으로 어떻게 걸면 좋을까요 0 3 1,499

by 이준하 [2006.11.15 08:41:14]


1)

select * from TB_USERLOG
where sdate in ('20061010115208','20061010141908')
and IPADDR in ('168.111.111.1','168.111.111.2')

 

2)

select * from TB_USERLOG
where sdate||IPADDR in ('20061010115208168.111.111.1','20061010141908168.111.111.2')

 

리스트중에서 체크박스를 선택하게 되면

해당 부분에서 몇몇 항목(위에서는 날짜, 아이피) 내용을 조회조건으로 하여

조회를 하여야 합니다.

 

위의 1번과 2번과 같은 조건을 가질 수 있는데 어떤것이 효율적일지 궁금해서

질문을 올려봅니다.

 

1번같은 경우에는 문제가 있는게 날짜와 아이피가 하나의 묶음이기때문에 사실 저러한 조건은 만족하는것은 아니거든요. 그냥 예로만 올린것이고..

- 오히려 (sdate = '****' and ip = '****') or (sdate = '****' and ip = '****') .. 이런식이 되어야 할듯 하구요.

 

먼저 검색을 해보아야 하는데...

질문 자체가 애매해서요.

 

혹 좀더 좋은 아이디어가 있다면 알려주세요.

by 현 [2006.11.15 00:00:00]
일단 1번을 추천합니다.
만약 님께서 말씀하신대로 or로 만들어져야 한다면 어쩌면 옵티마이져가 UNION ALL로 만들지도 모릅니다.
2번은 해당 컬럼에 만약 인덱스가 있다 하더라도 인덱스 스캔을 할 수 없습니다...

by 히보기 [2006.11.15 00:00:00]
1번이 좋은형태인거 같네요 인덱스가 어떻게 걸렸느냐에 따라좀 다르기는 하지만 2번의 형태는 인텍스를 못탓닙다. 무쟈게 대량이라면 2번이 좋을수도 있구요 ^^

by 이준하 [2006.11.15 00:00:00]
음..역시 2)번은 비추천이네요.
뭉뚱그려서 어찌어찌 해볼려고 했는데..
아무래도 고민을 해보아야 하는 문제인가 봅니다.
답변 감사합니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입