작성일자 : 2024-08-23Ver 0.1.11. 배경SQL에서 임시테이블을 만드는 방법은 일반적으로 두가지가 있다.바로 WITH문과 INLINE VIEW를 활용하는 것이다. 두 방법은 복잡한 쿼리를 더 구조화하고 이해하기 쉽게 만드는데 유용하다. 쿼리를 작성하면서 언제 어떤 방법을 사용하는 것이 좋을지에 대해서 많은 고민을 하게 되었고,두 방법의 장단점과 특징을 알고 있다면 성능이 좋고 효율적인 쿼리를 작성 할 수 있다는 생각에 정리를 해보고자 한다.2. WITH 문 ( CTE, Common Table Expression)특징• 구조화: 복잡한 쿼리를 더 작고 이해하기 쉬운 블록으로 나눌 수 있다.• 재사용 가능: 하나의 WITH 절에서 정의한 CTE는 동일한 쿼리 내에서 여러 번 참조할 수 있다.•..
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 식을 사용해 원하는 결과를 구할 수 있다. 하지만 그렇게 하면 필요 없는 결합이 발생해서 성능..