database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7096 게시물 읽기
No. 7096
다중키 사용시 다른 컬럼의 인덱스를 어떻게 생성해야..
작성자
김진호
작성일
2017-09-27 18:57ⓒ
2017-09-27 19:00ⓜ
조회수
2,667

테이블을 만들때 의미없는 키를 사용하기 싫어서 다중키를 썼는데요.

 

예를들어 아래와 같은 테이블이 있다면

A col B col C col D col
1 a 30 3
1 b 22 2
1 a 22 ff
2 d 31 ef
3 b 30 ef

 

다중키로 설정한 컬럼은 A + B + C 라고 할때 아래와 같은 쿼리를 실행한다면

select * from tab
Where A='1' And D='ef'

 

다중키 설정시 자동 생성된 인덱스외에 D col 에 별도의 인덱스를 만들어주고 싶습니다.

 

어떻게 만들어야 잘만들었다고 칭찬을 받을까요

 

[다중키로 인해 이미 A + B + C는 인덱스가 존재함]

1안 : A col + D col 로 복합인덱스를 생성

2안 : D col 만 인덱스로 생성

 

이 글에 대한 댓글이 총 3건 있습니다.

1안이요 그리고 현재 5건의 data가 전체를 대변하는 data라면 D+A가 더 좋습니다.

2안으로 하면 

select * from tab
Where A='1' And D='ef'

이 쿼리에는 A+B+C를 사용하든지 D를 사용하든지 둘 중에 하나만 사용합니다.

우욱님이 2017-09-28 09:33에 작성한 댓글입니다. Edit

해당 쿼리만 보면 당연히 a + d 또는 d + a 가 최적의 인덱스입니다.
모든 쿼리에 대해 각각 최선의 인덱스를 만들어 주면 좋겠지만...
인덱스를 무한정 만들 수는 없지요.(성능 저하, 자원 부족)
해당 테이블이 사용되는 모든 쿼리의 엑세스 패턴을 분석해야 합니다.
 - 가장 자주 사용되는 엑세스 패턴에 맞는 인덱스
 - 여러가지 패턴을 어우를 수 있는 조합의 인덱스
 - 인덱스의 총 갯수 제한(단, 꼭 필요하다면 만들어야죠)
예를 들면 a, d 조건이 오는 쿼리도 있고 d 만 오는 쿼리도 있다면?
인덱스는 d + a 로 만들면, 두가지 패턴을 모두 만족시킬 수 있습니다.

마농(manon94)님이 2017-09-28 09:44에 작성한 댓글입니다.

두분 모두 댓글 너무 감사드립니다

 

개념을 좀 알거 같아 시원하네요

 

추석 잘보내시고 사이트가 발전되길 빌게요 

글쓴이님이 2017-09-29 20:15에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7101프로시저 업데이트 쿼리 질문입니다.
박준서
2017-10-25
2421
7100조건절에 재귀쿼리는 쓸수 없나요? [1]
가을이
2017-10-19
2650
7097날짜 변환 입니다. [3]
도와주세요.
2017-09-29
2798
7096다중키 사용시 다른 컬럼의 인덱스를 어떻게 생성해야.. [3]
김진호
2017-09-27
2667
7095mssql 식사시간 구하기 [5]
김알지
2017-09-27
3161
7094쿼리 부탁드려요 [2]
이수돈
2017-09-25
2343
7093행별 총합, sub sum, 열끝에는 sum을.. 출력 도움 부탁드립니다~ [2]
개발자
2017-09-18
2687
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다