char(1)으로 만들어진 isOpen이라는 컬럼이 있습니다.
[ContentID] [int] IDENTITY(1,1) PK
[IsOpen] [char] (1) not null default('Y')
단순히 공개 비공개를 나타내는 필드로 값은 Y,N 만 들어 갑니다.
이 필드를 포함한 테이블의 데이터 건수는 하루에 3천개 정도 쌓이 것으로 예상하며, 인서트와 셀렉트가 상당히 많이 일어 납니다.
데이터 조회시에...
select * from tblTable where isOpen='Y' 이렇게 뽑는게 빠를지... // IsOpen에는 NonClustered Index를 걸어준 상태구요...
아니면... tblOpenIndex 라는 이름으로 isOpen이 Y로 설정된 값이 들어있는 테이블을 만들어 인덱스를 걸어 뽑는것이 빠를지..
[tblOpenIndex]
[ContentID] [int] PK -- CLUSTERED INDEX 구성
select * from tblTable where ContentID IN (select ContentID from tblOpenIndex) 이런식의 쿼리.. 중 어느게 빠른가요 ???
---------------------------------------------------------------------------------------------------------------------
보통 not in 쿼리가 느리다고 하시던데... 그렇다면 IN 쿼리는 속도가 어떤가요 ?
NOT IN과 IN을 상당히 많이 사용 할 것으로 생각이 되는데.. 둘다 속도가 별로라면.. 설계를 바꿔야 해서.. ㅜㅜ
고수님들의 조언 부탁드립니다.
|