Skip to content

Latest commit

 

History

History
executable file
·
15 lines (8 loc) · 1.59 KB

File metadata and controls

executable file
·
15 lines (8 loc) · 1.59 KB

17. 데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요.

DBMS도 데이터베이스 테이블의 모든 데이터를 검색해서 원하는 결과를 가져오려면 시간이 오래 걸린다. 그래서 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍(key-value)으로 삼아 인덱스를 만들어 둔다.

DBMS의 인덱스도 마찬가지로 칼럼의 값을 주어진 순서로 미리 정렬해서 보관한다.

SortedList와 ArrayList 자료 구조로 비교

sortedList 자료구조는 데이터가 저장될 때마다 항상 값을 정렬해야 하므로 저장하는 과정이 복잡하고 느리지만, 이미 정렬돼 있어서 아주 빨리 원하는 값을 찾아올 수 있다. dbms의 인덱스도 인덱스가 많은 테이블은 당연히 insert나 update, delete 문장 처리가 느려진다. 하지만 이미 정렬된 표를 가지고 있기 때문에 select 문장은 매우 빠르게 처리할 수 있다.

결론적으로 dbms에서 인덱스는 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능이다. 테이블의 인덱스를 하나 더 추가할지 말지는 데이터의 저장 속도를 어디까지 희생할 수 있는지, 읽기 속도를 얼마나 더 빠르게 만들어야 하느냐에 따라 결정해야 한다. select 쿼리 문장의 where 조건절에 사용되는 칼람이라고 해서 전부 인덱스로 생성하면 데이터 저장 성능이 떨어지고 인덱스의 크기가 비대해져 오히려 역효과다

참조

real mysql / 위키북스