ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CS :: DB :: 효율적인 SQL 쿼리 작성 방법
    Computer Science/DB 2021. 6. 23. 09:43
    728x90

     

     

    1. WHERE 조건의 이해

     

    1) 묵시적 형변환

    • 묵시적 형변환이란, 조건절의 데이터 타입이 다를 때, 우선순위가 높은 타입으로 형이 내부적으로 변환되는 것을 말한다.
    • 예 : 정수 타입의 우선순위가 문자열 타입의 우선순위보다 높다.
    • 이로 인해, 의도치 않은 결과가 나올 수 있다.

     

     

    2) 잘못 사용된 함수

    • 대부분의 DBMS에서는 함수 기능을 제공하고, 이는 복잡한 연산을 알아보기 쉽고 사용하기 편리하게 하지만, 잘못 사용하면, 불필여한 시스템 부하를 일으킬 수 있다.

    • 위와 같이 쿼리를 작성한다면, 알아보기는 쉽지만 DB 내부적으로 'table fullscan'이 발생한다.
    • [reg_date] 컬럼의 검색 시, DATE_FORMAT 함수로 인해 옵티마이저는 [reg_date]와 연관된 데이터의 분포도를 알 수 없다.

     

     

    3) LIKE 검색

    • LIKE 검색은 매우 편리하지만, 대용량의 테이블인 경우 많은 부하를 가져올 수 있다.
    • LIKE 조건이 '검색어%'와 같이 검색어가 앞 단에 있다면, 데이터 분포도를 따져서 수행한다.
    • LIKE 조건이 '%검색어'와 같은 형태로 반드시 수행되어야 한다면, LIKE 조건 이외의 조건절을 활용하여 LIKE 처리가 필요한 데이터의 범위를 줄인다.

     

     


     

     

     

    2. SQL 레벨에서의 접근법

     

    1) 데이터 연산을 최소한으로 유도

    2) 불필요한 join 피하기

    3) semi join으로 인한 비효율 제거

    4) outer join이 반드시 필요한지 따져보기

     

     


     

     

     

    3. 스키마 레벨에서의 접근법

     

    1) primary key 직접적인 영향 여부

    2) 불필요한 인덱스의 삭제

     

     

     

     

     

     

    ** 참고 : https://nomadlee.com/mysql-%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8-sql-%EC%9E%91%EC%84%B1-3%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95/

    728x90

    'Computer Science > DB' 카테고리의 다른 글

    CS : DB : RDBMS vs NoSQL  (0) 2021.04.20
    CS : DB : Block vs Non-Block, Sync vs Async  (0) 2021.04.13
    CS : DB : paging, no offset, covering index  (0) 2021.04.13
    CS : DB : 트랜잭션과 격리 수준  (0) 2021.04.13
    Question : DB  (0) 2021.04.06

    댓글

kxmjhwn@gmail.com