인덱스 관련해서 질문 드립니다.
create index test_idx on test_table ( YMD, Agent, Skill);
create index test_idx1 on test_table (Agent, YMD, Skill);
위 두개의 index 를 하나의 동일한 테이블에 걸 경우 어떤 영향이 있는건가요..
순서가 성능에 영향이 있는건가요.
아니면, 동일한데 쓸대 없이 2개 한게 되는건가요..
순서가 select 성능에 영향을 미침
인덱스를 많이 만들면 insert, update 성능이 떨어짐
그래서 보통 조회쿼리를 수집해
다량 수행되고 필수 검색 등호조건의 컬럼을 앞으로 두고
범위검색 조건은 뒤쪽에 배치하면서
인덱스 갯수를 최소화함
스킵스캔 기능으로 인덱스 컬럼순서에 의한 성능차는 많이 작아짐
할 수 있으면 테스트 배드를 만들어서 확인해 보시는 걸 권합니다.
인덱스의 첫번째 컬럼의 데이터 분포도가 젤 중요합니다. 데이터 distinct 가 많을수록 성능이 좋습니다. (분포도, 선택도, 클러스터링 팩터 의 개념를 알면 좋을겁니다.) 해당 인덱스에서 ymd 로 조회되는게 10만건이고, agent 로 조회되는게 보통 10건 이내라면 두번째가 좋죠. 하지만 똑같은 컬럼인데 인덱스 순서를 바꾸어 2개 이상 만들었다는 것은 보통 쿼리의 where 조건 분기가 다른 쿼리가 있을 때입니다. (SM 사이트 들어가서 기존의 인덱스 함부로 지우면 안됩니다. 빨개지는 상황판을 보게될 것입니다. )