본문 바로가기
12.[SQL] Query Tuning - Partition 파티션 [SQL] Query Tuning - Partition 파티션이란 파티션 - 구획 분할 MySQL 서버 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 기능을 의미 큰 table이나 index를, 관리하기 쉬운 partition이라는 작은 단위로 물리적으로 분할하는 것 파티션을 사용하면 대용량 작업을 더 빠르게 처리할 수 있음 파티션 단위의 조회 및 DML → 부하를 분산시켜줌 DML 인 Delete 로 처리하게 된다면 삭제대상을 조회하는 부하/Operation 과 Redo/Undo를 생성하는 DML영역의 Operation 의 부하등이 동반되기 때문에 파티션을 사용한 파티션 단위의 Drop 을 이용하면 이런 부분을 대폭 줄일 수 .. 2022. 11. 19.
11.[SQL] Query Tuning - 2. 온라인 Select문 튜닝 방법론 참고 : SQL튜닝 방법론 ORACLE Select 쿼리 튜닝 순서 ORACLE Select 쿼리 튜닝 순서 쿼리 튜닝은 온라인 SQL이냐 대용량 배치 SQL이냐에 따라 튜닝방법이 달라집니다. 하지만 대용량 배치는 프로그램 수가 많지 않은 편입니다. 온라인 SQL 튜닝에서도 관점에 따라 튜닝방법이 다르 darusamu.tistory.com 출처: https://scidb.tistory.com/entry/SQL튜닝-방법론 [Science of Database] 튜닝 프로젝트에 투입되었다고 가정하고, 성능이 느린 Select문 하나를 받았을 때 튜닝을 어떻게 해야 하는지에 대해서만 설명 1. 적절한 인덱스를 사용하여 Block I/O를 최소화 하라 I/O 효율화 원리 라이브러리 캐시 최적화 데이터베이스 Ca.. 2022. 11. 16.
10. [SQL] Query Tuning - 1. 코드컨벤션 지정 나에게 주어진 첫번째 과제 - '우리팀에서 사용할 코드 컨벤션을 지정하는 것' 위 짤 처럼 되지 않기 위해서 다른 자료를 참고해 내가 잘할수 있게 + 다른사람이 알아보기 편하게 + 최대한 기존 코드들을 수정하기 쉽게 만들었다. (파이썬도 마찬가지) SQL General General SQL 코드 - 주석 가능하면 /*를 닫고 */를 닫습니다. 그렇지 않으면 주석 앞에 '--' 를 붙이고 간결하게 끝냅니다 /* Updating the file record after writing to the file */ UPDATE file_system SET file_modified_date = '1980-02-22 13:19:01.00000', file_size = 209732 WHERE file_name = '.v.. 2022. 11. 16.
9.[SQL] mysql Week 주 관련 함수 (date 조절), [SQL] Mysql Index 사용법 WEEK(date[,mode]) 주 번호 반환 / 주의 시작 날짜가 일요일인지 월요일인지와 반환 값이 0 ~ 53또는 1~ 의 범위에 있어야 하는지 여부를 지정 mode 인수를 생략하면 default_week_format사용 Mode | First day of week | Range Week 1 is the first week … 0 Sunday 0-53 with a Sunday in this year 1 Monday 0-53 with 4 or more days this year 2 Sunday 1-53 with a Sunday in this year 3 Monday 1-53 with 4 or more days this year 4 Sunday 0-53 with 4 or more days this yea.. 2022. 11. 16.
8. [SQL] 모든 whitespace(탭, 스페이스, 엔터 값 등) 제거, [SQL] SQL의 INDEX는 무엇인가? [SQL] 모든 whitespace(탭, 스페이스, 엔터 값 등) 제거 replace (키워드,'바꿀내용','어떻게바꿀건지내용') 을 replace (키워드, ' ', '') 으로 작성하면 공백만 바뀐다. 모든 화이트 스페이스 제거를 위해서는 (외부에서 오는 데이터는 언제든 이상한 값으로 올수 있기 때문에 ) Regexp_replace (키워드, '\S*', ' 로 작성해야 한다. --- - Oracle 공식문서는 여기 [https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm](https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm) ![Untitled](ht.. 2022. 11. 15.
7. SQL 에서 Where 1=1은 왜 쓰는걸까, mysql 키워드에서 문자 개수 찾기 SQL 에서 Where 1=1은 왜 쓰는걸까 요약 : 가독성을 위해서 / 주석처리 하려고 0. 무슨뜻 ? 1=1 말그대로 참 딱히 의미를 가지는건 아님 1. 어디서 사용? 쿼리를 다시 한번 훑을때 (디버깅) 주석처리하기 편하다 WHERE push_type_cd = '1' AND reg_dttm >= '2022-03-29'대신 WHERE 1 = 1 AND push_type_cd = '1' AND reg_dttm >= '2022-03-29'을 쓰면 WHERE 1 = 1 -- AND push_type_cd = '1' => 여기만 주석처리 쉽게 가능 ! AND reg_dttm >= '2022-03-29'이렇게 쉽게 주석처리 가.. 2022. 11. 15.
6. RFM Segmentation (SQL) 1. RFM 분석의 3가지 지표 집계하기 - Recency: 최근 구매일 - 최근에 구매하였는가? - Frequency: 구매 횟수 - 얼마나 자주 구매하였는가? - Monetary: 구매 금액 합계 - 얼마나 돈을 썼는가?2. 원리는 아래의 사진과 같다 3. 순서대로 진행 ! 1 먼저 집계 테이블을 구하는데 위에 분류된 기준을 사용해 컬럼을 생성해준다. select customer_id, count(customer_id) as frequency, sum(sales) as monetary, max(order_date) AS recent_order from records group by customer_id 2 그다음 나이브하게 5등분으로 나누어 준다. 위에서 만든 테이블은 CTE 형식으로 나타내어 주어도.. 2022. 11. 15.
5. SQL 날짜와 시간, 문자열 다루기, REGEXP(Regular Expression(정규 표현식)), SQL 공부전 처음에 무조건 읽어야 하는 글 ! 날짜와 시간 날짜와 시간은 date 와 string 을 왔다갔다 하므로 잘 비교해줘야 한다. 날짜를 문자형 형태로 비교하기 위해서는 date 타입을 string으로 변환 TO_CHAR() 함수를 이용 WHERE '20220115' > TO_CHAR(date, 'YYYY') as Year -> 2022 WHERE '20220115' > TO_CHAR(date, 'mm') as month -> 01 WHERE '20220115' > TO_CHAR(date, 'YYYY') as day -> 15 string 형태를 date 형태로 비교하고 싶은 경우 TO_DATE() 함수를 이용 WHERE SYSDATE > TO_DATE('20220115', 'YYYY-MM-DD') -> 2022-01-15 함수 내용 DAT.. 2022. 11. 15.
4. 그룹함수 Cube, Roll up, Grouping set, Window function, CTE, Partition by, SUBQUERY 와 JOIN 의 차이 📌 그룹함수의 필요성 그룹 함수(GROUP FUNCTION)의 필요성 결산 개념의 업무를 가지는 원가나 판매 시스템의 경우는 소계, 중계, 합계, 총 합계 등 여러 레벨의 결산 보고서를 만드는 것이 중요 업무 중의 하나입니다. 개발자들이 이런 보고서를 작성하기 위해서는 레벨별 집계를 위한 여러 단계의 SQL을 UNION, UNION ALL로 묶은 후 하나의 테이블을 여러 번 읽어 다시 재정렬하는 복잡한 단계를 거쳐야만 합니다. 하지만, 그룹 함수(GROUP FUNCTION)을 사용한다면, 하나의 SQL로 테이블을 한 번만 읽어서 빠르게 원하는 리포트를 작성할 수 있습니다. 또한, GROUPING 함수와 CASE 함수를 이용하면 쉽게 원하는 포맷의 보고서 작성도 가능합니다. 📌 요약 ROLLUP 함수 : .. 2022. 11. 14.
3. Join and Aggregate Data(1), Join and Aggregate Data(2), 조건 연산자 , WITH 문, 트랜잭션 BEGIN , COMMIT, ROLLBACK 조인과 집계 데이터 조인과 집계데이터= Grouping Set절 조인과 집계데이터 = Roll up 절 조인과 집계데이터 = Cube 절 조인과 집계데이터 = 분석 함수란 조인과 집계데이터 = AVG함수 조인과 집계데이터 = Row Number , Rank , Dense_Rank 함수 조인과 집계데이터 = First_Value , Last_Value함수 조인과 집계데이터 = Lag, Lead 함수 종류 설명 INNER 조인 특정 컬럼을 기준으로 정확히 매칭된 집합을 출력한다. OUTER 조인 특정 컬럼을 기준으로 매칭된 집합을 출력하지만 한쪽의 집합은 모두 출력하고 다른 한쪽의 집합은 매칭되는 컬럼의 값 만 을 출력한다. SELF 조인 동일한 테이블 끼리 의 특정 컬럼을 기준으로 매칭되는 집합을 출력한다.. 2022. 11. 14.
반응형