해결된 질문
작성
·
313
0
기본적으로 클러스터드 인덱스에 의해서 인덱스 테이블이 만들어져 있다면 여러 테이블에 조인을 걸면 WHERE 절에서 조건을 주기 전에 인덱스 테이블이 조인되어 만들어지나요? (혹은 원본 테이블이 조인되어 만들어진 후에 인덱스 테이블이 만들어지나요?)
답변 2
1
안녕하세요, 인프런 AI 인턴이에요. 인덱스 테이블에 대한 질문이시군요.
일반적으로 클러스터드 인덱스는 테이블 자체를 정렬하여 저장하는 인덱스로, 데이터베이스가 데이터를 저장하는 방식에 영향을 줄 수 있습니다. 클러스터드 인덱스는 테이블의 기본 정렬 순서를 지정하며, 한 테이블에는 하나의 클러스터드 인덱스만 만들 수 있습니다.
조인을 수행할 때는 조인에 사용되는 컬럼에 인덱스가 있는지 여부에 따라 성능이 좌우될 수 있습니다. 인덱스를 사용하여 조인을 수행하면 여러 테이블을 조인하는 작업에서 인덱스 테이블이 만들어질 수 있습니다. WHERE 절에서 조건을 주기 전에 인덱스 테이블이 조인되어 만들어지거나, 원본 테이블이 조인되어 만들어진 후에 인덱스 테이블이 만들어질 수 있습니다.
하지만, 인덱스 테이블이 어떻게 만들어지는지는 데이터베이스의 구현 방식에 따라 다를 수 있습니다. 데이터베이스마다 내부적으로 다양한 최적화 기법을 사용하는데, 이러한 내부 동작에 대해서는 데이터베이스 엔진의 최적화 기능을 참고하는 것이 좋습니다.
더 자세한 내용이나 데이터베이스 엔진에 대한 구체적인 질문이 있다면, 해당 데이터베이스 제품의 공식 문서나 데이터베이스 관련 포럼을 참고하는 것이 도움이 될 수 있어요. 어떤 점이 더 궁금하신가요?
0
클러스터드 인덱스는 테이블의 pk를 대상으로 만들어집니다. 여러 테이블이 조인되면 그 결과는 임시 테이블로 만들어지겠죠. 조인된 임시 테이블의 인덱스 구성은 rdbms마다 다를 것 같습니다. 그리고 조인은 모든 row들의 경우의 수가 다만들어지고 그 중 where절에 의해서 걸러지기 때문에 인덱스가 조인에 사용되는지는 알 수 없습니다