인덱스란데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로, 사전의 목차와 유사하다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지합니다.이러한 특징으로 인덱스는 쓰기 작업인 Insert, Update, Delete 연산 성능이 희생된다는 장점이 있습니다.하지만 데이터베이스 작업은 읽기 작업이 80% 정도 일어나므로, 인덱스를 사용하는 것이 더 큰 장점이 있습니다.InnoDB 스토리지 엔진에서는 Secondary Index(Primary Index를 제외한 모든 인덱스)의 리프 노드에는 레코드의 PK가 저장됩니다. 따라서 Secondary Index 검색에서는 레코드를 읽기 위해 PK를 가지고 있는 B-Tree를 다시 한번 검색해야 합니다. (1 + 1)B Tree자녀 노드의 최대 개수를..
인덱스를 타지 않는 쿼리1. function or operation querySELECT * FROM employee WHERE UPPER(name) = 'AHN'; SELECT * FROM employee WHERE YEAR(worked_at) = 2023; SELECT * FROM employee WHERE age + 1 = 100; 인덱스 컬럼에 함수 또는 연산을 수행하는 경우 데이터베이스는 인덱스를 사용하지 못합니다. 이유:인덱스는 Key의 순서대로 정렬되어 있습니다.이를 함수나 연산을 통해 인덱스에 변환을 수행하면, 기존 인덱스와의 순서가 불일치하는 문제가 생겨 인덱스를 통해 탐색을 하지 못합니다. 2. Like문 검색에서 와일드카드의 위치SELECT * FROM employee WHERE na..
Mysql 쿼리 속도 개선 4 가지SQL 쿼리에 적용된 실행 계획 확인하는 방법 - explainexplain select * from crew 1. select 실행 시 필요한 column만 뽑기많은 필드 값을 불러올수록 데이터베이스는 더 많은 로드를 부담합니다.column 중에 불필요한 값을 가진 필드가 있다면 과감히 제외하고, select 절에 필요한 열만 지정해 불러오는 것이 좋습니다. 2. 조건 부여 시, 기존 DB 값에 별도의 연산을 걸지 않기-- InefficientSELECT m.id, ANY_VALUE(m.title) title, COUNT(r.id) r_count FROM movie m INNER JOIN rating r ON m.id = r.movie_id WHERE FLOOR(r.v..
Index인덱스 파일은 데이터베이스에서 쿼리 성능을 향상시키기 위해 테이블의 특정 컬럼 값과 해당 행의 위치(Pointer)를 저장합니다.인덱스는 테이블의 데이터를 효율적으로 검색하기 위한 자료구조를 활용합니다. (B-Tree, Hash)Indexed Column Value인덱스가 설정된 컬럼의 실제 값들이 저장됩니다.해당 값을 이용해 데이터베이스가 특정 행을 찾는 데 필요한 정보로 사용합니다.Indexed Column Value: 101, 102, 103, 104, ...Row Pointer인덱스 파일에는 해당 인덱스 키 값이 테이블의 어느 행에 위치하는지에 대한 정보를 나타내는 포인터가 함께 저장됩니다.해당 포인터는 테이블의 실제 데이터 행을 가리킵니다.Indexed Column Value: 101 ..