인덱스를 타지 않는 쿼리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 ..
인덱스란 ▶ DBMS가 데이터베이스 내의 특정 레코드들을 빠르게 찾을 수 있도록 하는 데이터 구조이며, 인덱스를 통하여 질의를 수행하면 응답 시간이 향상됩니다. 즉, 인덱스는 데이터베이스에서 원하는 데이터를 조회하는데 시간을 단축시켜 주는 또 하나의 파일 데이터라 할 수 있습니다. 인덱스는 보통 형태로 구성되어 있습니다. 디스크 접근 시간이 주기억 장치 접근 시간에 비해서 크며 대부분의 데이터베이스 응용에서 디스크 접근을 많이 요구하여, 탐색 시간을 단축해야 좋은 성능을 가질 수 있습니다. 인덱스 파일의 크기는 보통 데이터베이스 파일의 크기에 비해 훨씬 작습니다. 왜냐하면 인덱스는 여러 애트리뷰트 중에서 탐색 키에 해당하는 일부 애트리뷰트만 포함되기 때문입니다. (+ 포인터도 있음) 데이터베이스에서 인덱..