쿼리최적화

옵티마이저(영어: Optimizer)는 데이터베이스 관리 시스템 (DBMS)에서 쿼리를 처리할 때 최적의 실행 계획을 결정하는 역할을 하는 부분입니다. DBMS는 사용자로부터 요청받은 SQL 쿼리를 어떻게 처리할지 결정하는 과정에서 옵티마이저를 사용합니다. 옵티마이저의 주요 목표는 다음과 같습니다: 성능 최적화: 목표: 쿼리를 가장 빠르게 실행하여 사용자에게 빠른 결과를 제공하는 것. 예시: 아래의 쿼리는 users 테이블에서 사용자 이름이 "John"인 레코드를 찾는 쿼리입니다. 옵티마이저는 인덱스를 사용하여 레코드를 빠르게 찾습니다. SELECT * FROM users WHERE name = 'John'; 2. 리소스 최적화: 목표: 제한된 컴퓨터 자원을 효율적으로 활용하여 다른 작업에 영향을 주지 ..
SQL 쿼리는 데이터베이스에서 데이터를 추출하거나 조작하는 데 사용됩니다. 그러나 대용량 데이터나 복잡한 쿼리의 경우 성능이 저하될 수 있습니다. 이러한 문제를 해결하기 위해 SQL 쿼리를 튜닝할 필요가 있습니다. 이 글에서는 SQL 쿼리 튜닝에 대해 알아보겠습니다. 인덱스 사용하기 인덱스는 대용량 데이터베이스에서 데이터 검색 속도를 향상시키는 데 매우 유용합니다. 인덱스를 사용하면 데이터베이스가 특정 열을 쉽게 찾을 수 있습니다. 따라서 적절한 인덱스를 만들어 쿼리의 실행 속도를 높이는 것이 중요합니다. 인덱스를 사용할 때는 WHERE 절에 사용되는 컬럼들에 대해서, 그리고 자주 조회되는 컬럼에 대해서 인덱스를 생성하는 것이 좋습니다. 인덱스 생성 시 데이터베이스의 크기와 인덱스 크기를 고려하여 적절한..
오늘은 회사에서 일을 하던 중 내가 짠 쿼리가 운영환경에서 10초이상 걸리며 오래 걸렸던 문제를 해결한 경험을 공유하고자 한다. 쿼리는 아래와 같은 카운트 쿼리에 데이터는 약 수억건이 있는 테이블이였다. (테이블명이나 컬럼명 등은 변경한 상태이니 양해바란다) SELECT COUNT(id) FROM member WHERE (created_at >= '2020-03-25 00:00:00.0' AND created_at < '2020-03-26 00:00:00.0') 데이터가 많이 없는 테이블에서 위와같은 카운트쿼리는 크게 문제되지 않겠지만 내가 쿼리를 날린 테이블은 수억건이 있기 때문에 조회를 할 때는 무조건 인덱스를 활용해서 날려야 한다. 그런데 이 member 테이블에는 간단하게 id, name, cre..
Chung-A
'쿼리최적화' 태그의 글 목록