leecom116

제이의 기술 블로그
  • Print (216)
    • Frontend (29)
      • React (3)
      • HTML, CSS (8)
      • JavaScript (11)
      • JQuery (4)
      • JSP (2)
    • Backend (59)
      • Java (31)
      • Spring (11)
      • Spring Boot (0)
      • Python (1)
      • Node.js (1)
      • C, C++ (12)
      • Linux (2)
    • Database (3)
      • MariaDB (0)
      • Oracle (0)
      • MySQL (0)
    • Project (1)
    • Algorithm (67)
      • 백준 (43)
      • 프로그래머스 (0)
      • 이코테 (6)
      • 코드업 (17)
    • Tool (2)
      • Git (1)
      • Log (1)
    • CS (4)
    • Tech Interview (18)
      • Java (9)
      • Web (9)
    • Study (31)
      • 인프런 (3)
      • 정보처리기사 (8)
      • util (4)
      • 쌍용 (14)

깃허브

    https://github.com/leecom116

«   2025/07   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

최근 글

인기 글

블로그 메뉴

  • 홈
  • 태그
  • 방명록

태그

  • 코드업 기초100제
  • static메서드
  • 코드업 기초
  • Associate
  • 자바 인터페이스
  • Web Developer
  • 나도코딩
  • 객체 배열
  • 자바의 정석
  • HTML
  • 코드업 2차원 배열
  • 코드업
  • 웹 개발
  • 웹개발
  • 메타포어
  • C언어 프로젝트
  • 의존성 주입
  • 참조형 변수
  • 논리 연산자
  • 산술 변환
  • CSS
  • char
  • 웹 개발 부트캠프
  • 정보공학 방법론
  • JSP
  • 자바 예외 처리
  • 나선형 모델
  • man month
  • 델파이 기법
  • c언어

최근 댓글

hELLO · Designed By 정상우.
leecom116
CS

[SQL] 쿼리 속도 향상시키는 법

2024. 10. 3. 07:40

쿼리 튜닝

- 데이터베이스 쿼리의 성능을 향상시키기 위한 작업

- 쿼리 실행 속도를 빠르게 하고, 자원 사용량을 줄이는 것을 목표

- 예시: 인덱스 생성, 쿼리 최적화, 테이블 구조 변경 등

​

일반적인 쿼리 튜닝 방법

1. 인덱스 활용

2. 서브쿼리보다는 조인문 사용

3. 쿼리 최적화 (Where 절 최적화)

 

쿼리 최적화

(1) SELECT 를 할 때는 필요한 컬럼만 추출

(2) LIKE 문을 사용 시, 와일드카드 문자열(%)을 String 앞부분에 배치하지 않기

(3) GROUP BY 연산 시, HAVING 보다는 WHERE 절 사용하기

(4) 조건 부여 시, 기존 DB값에 별도 연산 사용 안하기 ex) 조건절에 floor 함수 사용

(5) SELECT DISTINCT, UNION DISTINCT와 같이 중복 값을 제거하는 연산 사용 안하기

(6) 3개 이상의 테이블을 JOIN할 경우에 크기가 가장 큰 테이블을 FROM절에 배치하고,

JOIN절에는 남은 테이블을 작은 순서대로 배치하기

(7) 자주 사용하는 데이터 형식에 대해서는 미리 전처리된 테이블을 따로 보관 및 관리하기

​

 

추가적인 쿼리 튜닝 방법

1. 인덱스 재구성

- 데이터베이스 테이블에 생성된 인덱스를 다시 만드는 작업

- 데이터가 INSERT, UPDATE, DELETE 되면서 인덱스가 파편화되어 성능 저하가 되는 것을 방지

2. 쿼리 캐싱

- 자주 실행되는 쿼리 결과를 메모리에 저장

- 동일한 쿼리가 반복적으로 실행될 때마다 캐시된 결과를 사용해 응답시간 단축

3. 데이터 파티셔닝

- 큰 테이블을 여러 개의 작은 조각(파티션)으로 분할 처리

- 각 파티션에 대한 쿼리를 병렬 처리하여 성능 향상

- 특정 기간이나 조건에 해당하는 데이터만 처리하여 I/O 감소

4. 쿼리 힌트

- 쿼리 최적화기에 특정 쿼리를 실행할 때 어떤 방법을 사용해야 하는지에 대한 정보 제공

- 개발자가 직접 원하는 방식으로 쿼리를 실행하도록 유도

저작자표시 (새창열림)

'CS' 카테고리의 다른 글

[인증 방식] Cookie vs Session vs Token  (0) 2024.10.14
HTTP vs AJAX vs WebSocket  (0) 2024.09.25
이더넷 vs 인터넷  (0) 2024.09.21
    'CS' 카테고리의 다른 글
    • [인증 방식] Cookie vs Session vs Token
    • HTTP vs AJAX vs WebSocket
    • 이더넷 vs 인터넷
    leecom116
    leecom116

    티스토리툴바