Database - Index, Clustered Index vs Non-Clustered Index

Index 종류 B-tree - high cardinality, re-balanced needed, logN Hash - Hash Function BitMap - low cardinality columns ( ex. boolean ) Specialized Index Index Pros and Cons index 는 항상 모든 케이스에 적절한것은 아니다. 적은 수의 rows 의 table 의 경우 index search 보다 순차적 search 가 빠를 수 있다. 또한 table 의 대부분의 rows 나 전체 rows 를 조회할 때는 순차적 search 가 더 빠를 수 있다. 그러나, 대부분의 경우 index 가 조회 성능을 향상 시킨다. Where 절을 통한 쿼리 Index 에 해당하지 않는 행은 검색에서 제외한다. Join 에서도 성능이 좋다 min, max 값을 찾기 좋다. group by, order by 의 성능에도 좋다. table 에서 직접 조회하기 보다, index 를 통해서 조회한다. index 는 SELECT query 의 속도를 높여주는데 좋은 반면에, 실질적으로 UPDATE, INSERT, DELETE 는 속도를 저하 시킨다. 왜냐하면 MySQL 은 table 에 변화가 일어나면 data 를 reindex 한다. 만약, 조회보다 변경이 많은 테이블에서는 인덱스를 사용하지 않는 것이 좋을 수도 있다. 또한 색인은 저장해야하는 추가 데이터가 있는 테이블로 데이터베이스에서 추가 공간을 차지한다는 점도 고려해야한다. 이는 큰 고려 사항은 아니지만 데이터베이스에 허용하는 공간에 따라 달라질 수 있다. Clustered Index vs Non-Clustered Index Clustered Index - PK 제약 조건과 같이 생성된 테이블은 database engine 이 자동으로 clustered index 를 생성한다. 따라서 data 는 key, value 에 맞게 정렬되어 저장된다. Non-Cluster...