목록index (3)
도당탕탕
저번 글에서 인덱스 스캔에 관련하여 공부를 했었습니다. 이번에는 인덱스의 사용목적에 대해 공부해보겠습니다. 인덱스 구조 인덱스를 생성하면 어떤 과정을 거칠까요? 아마 다음과 같이 이루어질 것입니다. 데이터베이스 엔진은 생성된 인덱스를 별도의 저장공간을 만듭니다. 인덱스화 된 데이터들을 별도의 저장공간에 저장시킨다. 위에서 봤을 때 인덱스 테이블도 같이 만들기 때문에 비효율적으로 보이지만, 테이블의 모든 로우를 매번 검색하지 않고 빠르게 데이터를 찾아올 수 있기 때문에 인덱스는 매우 유용하다고 생각합니다. 인덱스와 조인 관계 일단 조인은 무엇이며 왜 사용하는 것일까요? 조인은 여러 테이블에서 레코드를 조합하여 하나의 로우로 표현한 것이다. 운영중인 많은 서비스들에서 하나의 테이블에 모든 데이터를 담지 않습..
이번 글에는 인덱스를 왜 사용하는지, 인덱스 스캔과 테이블 스캔, 인덱스 종류 등 인덱스에 대해 공부해 보도록 하겠습니다. 인덱스를 왜 사용할까? 인덱스를 왜 사용할까요? 데이터베이스를 공부해보셨던 사람들은 아마 이런 생각을 할겁니다. 인덱스를 사용하면 빠르게 데이터를 찾을 수 있기 때문에 인덱스를 사용하는거 아냐? 네! 맞습니다. 테이블 풀 스캔하는 것 보다 인덱스 스캔을 하면 데이터를 빠르게 찾을 수 있다는 사실은 누구나 알고 있습니다. 하지만 여기서 궁금한점! 어느 상황에서든 인덱스 스캔이 테이블 스캔보다 빠를까요? 인덱스 스캔 VS 테이블 스캔 우선 인덱스 스캔과 테이블 스캔에 대해 보죠. 인덱스 스캔과 테이블 스캔의 정의는 다음과 같습니다. 인덱스 탐색 쿼리를 만족하는 레코드를 추출 하기위해 인..
RDB에서 NULL은 데이터가 들어가지 않은 특별한 값입니다. 따라서 NULL은 동등이나 연산자로 비교가 불가능하고 IS NULL 키워드를 통해 널 값이 있는지 없는지만 확인 할 수 있습니다. 인덱스는 보통 WHERE 조건 절엥 자주 사용되는 컬럼, 분포도가 높은 컬럼을 선정합니다. 그리고 인덱스를 통해 쿼리의 성능을 향상 시킵니다. 따라서 개발자는 인덱스를 설정할 때 해당 컬럼이 NULL을 포함하는지 혹은 NULL값을 포함한 인덱스를 시스템이 어떻게 처리하는지 등 고려해야합니다. 인덱스의 특별한 기능 데이터베이스 시스템에서 인덱스를 걸때 NULL를 제외해주고 인덱스를 생성할 수 있는 기능을 제공합니다. 만약 이런 기능이 없으면 어떻게 될까요? NULL도 인덱스가 되버려 저장 공간이 심각하게 낭비 될 것..