안녕하세요.
회원가입 테이블에 USER_ID(bigint), USER_EMAIL(varchar 100), USER_KEY(varchar 200), CREATEDATE(datetime2)
이렇게 4가지의 정보가 있습니다.
USER_ID는 숫자형식으로 1에서 계속 순차적으로 증가하는 방식이구요
CREATEDATE도 마찬가지로 가입일이니깐 순차적으로 증가합니다.
그런데 USER_EMAIL, USER_KEY는 회원에 따라 무작위로 달라지겠죠..
CREATEDATE 부분은 관리툴에서 날짜별 용도로 검색할 목적이고
나머지 부분은 서비스 내에서 WHERE 절로 자주 쿼리를 쓸 예정입니다.
이런식의 테이블에서는 클러스터와 넌클러스터 인덱스를 어떻게 각각 줘야지
빠른 검색이 가능할까요?
USER_ID 는 유니크라야 합니다.
도움 부탁드립니다.
Comment 1
-
초짜해커
2014.09.26 11:33
주어진 질문만으로는 딱히 어떻게 인덱스를 잡는게 좋을지 답드리기가 힘드네요.
인덱스가 결국은 쿼리의 실행을 빠르게 하는 목적이기 때문에 (또 다른 목적이 있다면 Pass!!!)
어떤 쿼리가 가장 빈번한지 그리고 점유율은 어느정도인지도 알아야 조언이 가능할거 같습니다.
그리고 인덱스에 대해 조금만 공부를 해보세요.
클러스터드 인덱스가 Lookup이 발생하지 않기 때문에 가장 좋습니다.
하지만 넌클러스터드 인덱스인 경우도 인덱스키나 인쿨루드 된 컬럼만 SELECT 할 경우
Lookup을 하지 않기 때문에 클러스터드 인덱스와 거의 동일한 성능을 냅니다.
그래서 넌클러스터드 인덱스에 적절하게 컬럼을 인쿨루드 시키는것도 도움이 됩니다.