DBMS에서 Non Clustered Index를 사용하지 않는 이유
268
작성자 없음
작성한 질문수 0
안녕하세요
강의 9분부터 시작되는, DMBS 자체적으로 Non Clustered Index를 사용하지 않는 이유가 궁금해서 질문드립니다.
Q1)
다른 수강생분들이 올린 질문도 참고를 했는데
SELECT *
FROM TestOrders
WHERE CustomerID = 'QUICK';
다음과 같은 sql문을 실행했을 때 DBMS가 INDEX를 사용하지 않고 SCAN을 하는 이유가 실제로 힙 테이블 내에 page가 메모리에 적재되지 않아 역효과가 발생할 수 있기에 라고 Full scan을 하는게 더 낫다고 하셨습니다.
마치 OS 가상메모리에서 page fault 가 일어나는 현상과 비슷하다고 생각을 합니다. 여기까지는 이해가 됐습니다.
다만 full scan이 더 효율적일 수 있을까? 하는 의구심이 듭니다.
SELECT *
FROM TestOrders
WHERE CustomerID = 'QUICK';
다음과 같은 sql문을 실행했을때 테이블의 데이터들도 인메모리 상태가 아니라면 물리 저장소에 접근후 메모리에 적재를 해야할텐데 과연 더 효율적일까 생각이 듭니다.
둘 다 메모리에 없다면 물리 저장소까지 다녀오는 건 비슷하다고 생각하는데 Full Scan이 조금 더 빠른건 Locality 때문인걸까요?
Q2)
마지막 질문으로 Clustered Index와 비교해서 생각을 해보고싶습니다.
Clustered Index는 Leaf Page가 곧 Data Page인데 이 Data Page도 메모리에 항상 적재되어 있을 것 같진 않습니다. 그럼에도 불구하고 Non Clustered Index보다 Select와 같은 Lookup이 빠른 이유는 Data Page내에 정렬된 데이터들과 이에따라 자연스레 형성된 Locality 때문인가요?
답변 1
2
DB 쪽에서는 정말로 상황에 따라 (데이터 개수, 구조 등등) 다르기 때문에
어떤 쪽이 낫다고 확답할 수는 없습니다.
각종 상황에 대해 테스트를 해보는 것이 진정한 정답이고
심지어 DB에서 골라주는 방법도 항상 최선이라고 보장할 수 없습니다.
상황에 따른 대응과 경험이 중요하고
아마도 그래서 DBA가 연봉이 높지 않을까 싶네요 ㅎㅎ
최신 하드웨어에서 SQL Express 설치에러 해결법
0
60
1
인벤토리 테이플 데이터가 엄청 많아지면
0
98
2
DISTINCT의 행 개수와 COUNT(DISTICNT )의 결과가 왜 차이나는지 궁금합니다.
0
102
1
conect시 신뢰할 수 없는 기관에서 인증서 발급 오류 뜨시는분들
0
320
1
PRIMARY KEY와 CLUSTERED INDEX의 차이
0
332
1
락과 트랜잭션 격리수준 차이는 뭔가여?
0
535
1
외래 키 질문이 있습니다.
0
386
1
게임 프로젝트와 연동하는 강의 내용은 포함되어 있지 않는 건가요?
0
566
1
윈도우 함수는 SELECT에서만 사용가능한가요?
0
453
1
데이터 베이스가 만들어지지 않을 때
9
800
3
sql 강의 관련 질문
0
680
1
강의내용 외의 질문이 있습니다
0
583
1
sinter
0
361
1
테이블 여러개랑 조인
0
373
1
서버 컴퓨터 스펙에 따라서 성능 차이가 심한가요?
0
799
1
Non-Clustered 에서 clustered index 추가시
0
439
1
UNIQUE INDEX와 PRIMARY KEY의 기능적차이
0
584
1
Part5: 데이터베이스_ SSMS 입문 테이블작성 오류에관하여
2
904
2
인덱스의 저장 방식에 대해서 질문이 있습니다!
1
539
1
MSSQL vs AWS
0
365
1
join 관련 질문입니다.
0
288
2
Inner Join 질문
0
306
1
데이터베이스 원리는 CAP이론을 비유하여 설명하신 건지 궁금합니다.
1
401
0
CLUSTERED INDEX
1
305
1





