SQL 성능을 향상시키고 싶다면

Yeon Seong Hwang·2024년 5월 3일
0

SQL

목록 보기
4/4

📌 SQL을 효과적으로 작성해야 하는 이유

시스템의 성능이 저하된다면 네트워크, OS 및 애플리케이션 설정 등 다양한 부분을 의심해볼 수 있을 것이다. 하지만 앞서 말한 요소들은 한번 최적화를 거치고 나면 추후 문제를 발생시키지 않을 가능성이 높다.

하지만 시간이 지날수록 우리의 데이터베이스에 쌓이는 데이터는 늘어나기 때문에 우리가 어떤 SQL을 작성해서 데이터를 가져오느냐에 따라 성능에 치명적인 영향을 미칠 수 있게 된다.

그래서 효과적인 쿼리를 작성하는 것이 필수적이며, 올바른 SQL은 데이터베이스 성능을 향상시킬 수 있다.


📌 EXPLAIN을 활용하자

MySQL의 EXPLAIN이라는 명령어를 사용하면 쿼리가 실행될 때 데이터베이스가 어떻게 데이터를 찾아가는지 일련의 과정을 알 수 있다.

💡 Oracle 데이터베이스는 EXPLAIN PLAN이라는 명령어를 지원한다

예를 들어, Orders 라는 테이블에서 user_id가 100인 주문을 선택한다고 가정해보자. 아래와 같이 EXPLAIN을 사용하면 데이터베이스 엔진은 쿼리 실행을 시뮬레이션하게 되는데, 이 시뮬레이션은 실제 쿼리를 실행하지 않고 자세한 보고서를 생성한다

> EXPLAIN SELECT * FROM orders WHERE user_id = 100;

결과:
sql

EXPLAIN은 다음과 같은 항목을 포함한다

  • id: query 실행 단계의 식별자
  • select_type: 쿼리에 따라 SIMPLE, SUBQUERY, UNION등의 타입이 존재한다
  • type: 테이블에서 어떻게 행이 데이터를 가져올 것인가에 대한 접근방법을 나타낸다 (ex, all=전체스캔, index=index스캔, ref=여러개의 행 fetch)
  • possible_keys: 사용될 수 있는 잠재적 인덱스
  • key: MySQL이 선택한 키(인덱스)
  • ref: 행을 선택하기 위해 키와 함께 사용되는 열 또는 상수
  • rows: 쿼리를 실행할 때 MySQL이 검사할 것으로 예상되는 예상 행 수
  • extra: 임시 테이블 또는 파일 정렬 사용과 같은 추가 세부 정보(옵티마이저의 행동을 파악할 때 중요하다)

🔗 참고자료

profile
온 몸으로 기억하기 위해 기록합니다. 🌱

0개의 댓글