SQL/Optimization

작성일자 : 2023-09-23 Ver 0.1.1 SQL에는 집약 함수(Aggregate Function)라고 하는, 다른 함수와는 구별해서 부르는 함수가 있다. COUNT SUM AVG MIN MAX 위 5개 함수는 가장 대표적이면서 익숙한 함수이고, 이 외에도 분산, 상관과 같은 통계적 자료를 구하기 위한 함수들이 많이 구현되고 있다. 1. 여러 개의 레코드를 한 개의 레코드로 집약 (비집약 테이블) id data_type data_1 data_2 data_3 data_4 data_5 data_6 Jim A 100 10 34 346 54 Jim B 45 2 167 77 90 157 Jim C 3 687 1355 324 457 Ken A 78 5 724 457 Ken B 123 12 178 346 85..
작성일자 : 2023-09-21 Ver 0.1.1 구문 기반식과 식 기반 CASE 식은 초보자들이 사용하기에 어려운 것도 사실이다. 단적인 이유는 SQL 초보자와 중급자 이상이 살고 있는 세계는 다르기 때문이다. 일반적으로 SQL 초보자는 절차 지향적인 세계에서 살고 있다. 이는 대부분 처음 배우는 프로그래밍 언어가 절차 지향형 프로그래밍 언어이기 때문이다. 그 세계에서 생각의 기본 단위는 ‘구문(statement)’이다. 하지만 SQL 중급자 이상은 선언적인 세계에서 살고 있다. 여기서 기본 단위는 ’식(expression)’이다. 이들 두 세계에서는 기본적인 생각의 쳬계(Scheme)가 다르다. SQL 초보자가 UNION을 사용해 조건 분기를 하는 이유는 간단하다. UNION이라는 것 자체가 구문을 ..
작성일자 : 2023-09-21 Ver 0.1.1 앞서 UNION을 사용하면 안좋은 경우에 대해서 살펴보았지만, UNION을 사용해야하는 경우도 있다. UNION을 사용하는 것이 오히려 성능적으로 좋은 경우도 있다. UNION을 사용할수 밖에 없는 경우 머지 대상이 되는 SELECT 구문들에서 사용하는 테이블이 다른 경우가 대표적이다. SELECT col_1 FROM Table_A WHERE col_2 = ‘A’ UNION ALL SELECT col_3 FROM Table_B WHERE col_4 = ‘B’; 물론 그렇다고 CASE 식을 사용할 수 없다는 것은 아니다. FROM 구에서 테이블을 결합하면 CASE 식을 사용해 원하는 결과를 구할 수 있다. 하지만 그렇게 하면 필요 없는 결합이 발생해서 성능..
작성일자 : 2023-09-19 Ver 0.1.1 집계를 수행하는 쿼리를 작성할 때, 쓸데없이 길어지는 경우를 자주 볼 수 있다. 아래의 예시 테이블을 살펴보자. (인구 테이블) Perfecture(지역이름) Sex(성별) Pop(인구) 성남 1 60 성남 2 40 수원 1 90 수원 2 100 광명 1 100 광명 2 50 일산 1 100 일산 2 100 용인 1 20 용인 2 200 (원하는 결과) Perfecture Pop_mem Pop_wom 수원 90 100 일산 100 100 성남 60 40 광명 100 50 용인 20 200 1. 집계 대상으로 조건 분기 1) UNION을 사용한 방법 이 문제를 풀 때 절차 지향적인 사고방식으로 접근한다면, 일단 남성과 여성 인구를 지역별로 구한뒤 merge..
Unlimited Jun
'SQL/Optimization' 카테고리의 글 목록