본문 바로가기

개발 이론/DB5

[mySQL] OrderBy 인덱스 (3) 지난 블로그에서 인덱스 종류와 커버링 인덱스에 대해서 알아보았다. 오늘은 OrderBy 인덱스에 관해서 이야기해볼예정이다. Order BY 인덱스 Order By절에 명시된 칼럼에 인덱스가 있다면 MySQL은 이미 정렬된 데이터를 사용하기 때문에 추가적인 정렬작업이 필요없다. 그러나 만약 없다면 filesort방식으로 임시 테이블을 사용해 정렬 작업을 수행한다. filesort 이용하고 있는지 여부는 EXPLAIN 명령어를 통해 Extra칼럼에 Using filesort가 있다면 filesort를 사용하고 있다는 것이다. 왜 Order By절에 명시된 칼럼에 인덱스를 사용하는 것이 좋을까? -> Limit절과 사용하게 된다면 인덱스가 있을때 MySQL은 필요한 만큼만 데이터를 읽고나서 처리를 중단한다. .. 2024. 3. 10.
[mySQL] 인덱스 종류와 커버링 인덱스 (2) 지난 블로그에 인덱스와 복합인덱스에 대해서 기록해보았다. 오늘은 인덱스 종류와 커버링 인덱스에 관해서 이야기해볼예정이다. Explain type, extra 설명 앞선 내용을 설명하기 전에 인덱스를 확인할때바다 type과 extra를 봤다. 이에 관해서 조금 이야기를 나눠보자. 이에 대해서 간단하게 정리해둔 블로그가 있다. 여기서는 주요키워드만 볼 것이다. 1. type all을 빼고는 인덱스를 탄다는 것알 알면된다. index -> index full scan : 수직적 탐색 없이 인덱스 리프 블록 처음부터 끝까지 수평적으로 탐색한다 데이터 검색을 위한 최적의 인덱스가 없을때 차선으로 선택됨 예를 들어 인덱스 선두 칼럼이 조건절에 없으면 옵티마이저는 먼저 Table full scan을 하고자하지만 대용.. 2024. 3. 7.
[mySQL] 인덱스 개념과 복합 인덱스 (1) 인덱스란 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것이다. insert, update, delete의 성능이 좀 느려질 수 있지만 select 성능을 향상 시킬 수있다. 인덱스는 B-tree라는 구조를 사용하는데 이와 관련해서는 이 블로그를 참고 바란다.!(그림으로 잘 설명되어있음) 인덱스는 한마디로 쿼리 결과값을 빠르게 하고 싶어서 생성한 것이다. 그럼 인덱스는 어떤 칼럼으로 생성해야하는데?? 인덱스 칼럼 생성 일반적으로는 카디널리티가 높은 것을 잡아야한다고 한다. 카디널리티란 해당 컬럼 데이터의 중복된 수치를 말하는데 예를 들어 학번 과 성별의 카디널리티를 비교하면 학번이 당연히 높다. 카디널리티 높은 것로 잡는 이유는 필터링이다. 최대한 많은 부분을 걸러내기 위해서이다. 그럼 .. 2024. 3. 7.
[mySQL] Explain이 무엇인가? mysql 인덱스 정리하려다가 Explain보는 법? 좀 공부하려고 하다보니... 적어놔야할거같아서... Explain이 뭐냐?? mysql doc에 따르면 "select, delete, insert, replace, update 쿼리에 대해 Mysql이 어떻게 실행했는지 정보를 보여준다" 라고 되어있다. 즉, 데이터베이스가 데이터를 찾아가는 일련의 과정을 보여주는 것이다. explain을 통해 기존의 쿼리 튜닝 뿐만 아니라 성능 분석, 인덱스 전략 수립등을 할 수 있다고 한다. Explain 어떻게 사용하는데? 너무 간단하다. 사용하고자하는 쿼리 맨앞에 "Explain"만 붙이면 끝! Explain select id from user where name = 'test' 그럼 테이블이 이렇게 나온다.(해.. 2024. 2. 29.
[DataBase] 인덱스?? 어떤분의 블로그를 보다가 인덱스라는 개념이 나왔다. 나에게 인덱스란 단순히 검색 쿼리를 빠르게 할 수 있다 정도였다. 맞는 말이지만 해당 블로그에서는 인덱스를 어떻게 적용하는지 적용해서 어떤 결과가 나왔는지와 같은 얘기가 나왔는데 단순히 빠르다 라는 개념밖에 모르니...이해하기 쉽지 않아서 자세하게 정리해본다 Index?? 인덱스란 정렬이다. 인덱스는 저장공간을 활용하여 데이터베이스 테이블의 검색속도를 향상시키기 위한 자료구조이다. 예를 들어 내가 원하는 내용을 찾기 위해 책의 모든 페이지를 찾는 것은 시간이 오래걸린다. 이때 책의 색인("찾아보기")와같은 인덱스 역할을 하는 것을 통해 빠르게 찾을 수 있다. 영어 사전에서도 알파벳순 정렬도 마찬가지다. 알파벳순으로 정렬되어있기때문에 빠르게 찾을 수 있다.. 2023. 11. 12.
728x90