SQL 성능개선 팁을 정리해보려 한다.

 

1. 인덱스 사용 시 주의사항 

- 조회(SELECT, WHERE)시에는 속도에 도움을 주지만 삽입(INSERT), 갱신(UPDATE)시에는 오히려 느려진다.

- 데이터가 적은 경우에는 사용하지 않는 게 좋다.

- 조회쿼리 성능개선을 위해 WHERE 절에 자주 사용되는 컬럼은 인덱스로 지정하기도 하는데 주의할 점이 있다.

- 구간 별 선택이 많은 컬럼은 클러스터 인덱스 추천 

 

특정 컬럼을 인덱스로 지정해도 사용할 수 없는 경우

  • LIKE '%'을 변수 앞에서 사용 > 무조건 FULL SCAN
  • IS NULL, IS NOT NULL 사용
  • 여러컬럼에 OR 사용
  • 부정비교에 사용 (예시 : NOT, <>, !=. NOT EXISTS )
  • 컬럼을 변형한 경우 (예시 : substr() )

 

2. 데이터 추출 시 주의사항

  • select에 필요한 컬럼만 지정 (select * 지양, 사용하지 않는 데이터 호출에도 부하가 발생할 수 있음)
  • where 절 조건문 작성 시, 가장 많은 데이터를 걸를 수 있는 컬럼을 우선적으로 작성
  • where 절 조건문 작성 시, 왼쪽은 되도록 변형되지 않은 순수 컬럼을 사용
  • 정렬 (order by)하지 않고 limit, top을 사용중인지 확인
  • 백만건이 넘어갈 시에는 파티셔닝을 고려
  • IN < EXISTS < INNER JOIN 순으로 가독성은 떨어지지만 성능이 좋음
  • 서브쿼리보다 JOIN을 지향 (상황에 따라 서브쿼리로 추출 후 조인 시 성능이 개선될 수도 있음)
  • COUNT()보다 EXISTS() 지향
    • COUNT()는 모든 레코드 중 관련 데이터를 필터링 한 후 함수를 수행
    • EXISTS()는 필터링 시 하나라도 레코드가 있을 때 반환  

 

 

 

추후 개선 알게되는 팁은 계속해서 추가할 예정입니닷,,


Reference

 

SQL Outer join 2 tables

I have two tables, comp_product and comp_product_marchand. The comp_product contains product information (description, name, etc..) The comp_product_marchand contains different prices (product

stackoverflow.com

 

 

SQL IN EXISTS JOIN 성능 비교 및 용도 정리글

각종 SQL에서 데이터 조회 시 IN EXIST INNER JOIN을 사용해 조회를 하게 되는데 여기서 IN, EXIST, INNER JOIN 중 뭘 써야 성능이 가장 좋은가 싶을거다 일단 정답은 몇백~몇천건을 조회하는 정도라면 의미

wakestand.tistory.com

 

[SQL] WHERE 기능, 성능향상 팁 *****

WHERE 절은 "테이블내의 모든 행을 검색하는 대신 검색 조건을 지정하여 사용자가 원하는 행들만 검색하는 기능"이다. WHERE 조건식은 단일 조건식과 복수 조건식이 있다. 연산자 의 미  =   같다  

link2me.tistory.com

 

 

[MSSQL] 성능 향상을 위한 팁

1. 생성시 주의사항 (1) DB 생성시 주의사항 ① DB 명칭은 해당 서비스를 파악할 수 있도록 명명한다. ...

blog.naver.com

 

반응형

'CS Interview > DB' 카테고리의 다른 글

DB 용어 및 개념 (2)-INDEX  (0) 2022.02.02
DB 용어 및 개념 (1)-DBMS, 무결성, 정규화, UML, view  (0) 2021.05.07

+ Recent posts