SQL13 간단한 SQL 튜닝 팁 이번에 SQL 튜닝 강의를 들었다. 그 중 가장 인상 깊었던 내용 몇가지에 대해 정리를 해보려고 한다. 1. 부정 연산자를 사용하지 말자. 인덱스는 부정 연산자가 있으면 사용되지 못한다고 한다. !=, , not in 처럼 말이다. 평소에 아무 생각없이 사용 했었는데 실제 서비스 쿼리를 돌릴때는 긍정 표현으로 바꿔서 사용해야 겠다고 배웠다. =, in 으로 변경 2. database tool 사용할 때 내가 들어간 계정을 잘보고 사용하자. 운영 계정으로 쿼리를 돌렸다가 해당 계정이 솔루션과 연관되어서... 자원을 다 잡아먹고 나머지 쿼리들은 대기열에 빠져 실행이 못한 케이스가 있었다고 한다. 따라서 현재 내가 접속중인 계정을 꼭 확인하고 쿼리를 돌리자. 2025. 9. 28. Oracle 제약조건 종류와 사용 방법 오늘은 oracle에서 지원하는 주요 제약조건의 종류와 사용 방법에 대해 알아보자. 제약 조건의 종류- NOT NULL: 컬럼에 NULL 값을 허용하지 않음- UNIQUE: 컬럼의 모든 값이 고유하도록 보장- PRIMARY KEY: 테이블의 기본 키- FOREIGN KEY: 다른 테이블의 기본 키를 참조- CHECK: 지정된 조건을 만족하는 경우에만 데이터를 입력할 수 있음 예시거래(TRANSACTIONS) 테이블을 예시로 만들면 아래와 같다. CREATE TABLE TRANSACTIONS ( TX_ID NUMBER NOT NULL, CUST_ID NUMBER NOT NULL, TX_APPROVAL_NO VARCHAR2(30) NOT NULL, PRODUCT_NAME VARCHAR2.. 2025. 3. 15. 무조건적인 인덱스는 좋지 않다. 이번에 조회 쿼리를 짜는데 속도가 너무 오래 걸렸다. 아무리 원장 테이블이라 해도 심하길래 실행 계획을 분석해봤다. 그런데 맹목적으로 믿었던 인덱스가 문제였다. 인덱스가 full scan을 타면서 loop join을 도는게 화근이었다. 대략 걸리는 시간은 3분이였다. 따라서 loop join 대신 hash join을 사용해야 겠다고 생각했고 인덱스를 사용하지 않고 hash join을 hint로 줬다. 그 결과 3초만에 조회가 가능하게 변경 완료했다. 다행이도 SQLP 공부를 하며 이번 경험과 비슷한 내용이 있던 것 같아 금방 해결할 수 있었다. 앞으로 실행 계획은 필수로 봐야할 듯 싶다. 2025. 3. 2. [SQL] Window Function(윈도우함수) 윈도우 함수란 행과 행간의 관계를 정의하기 위해 사용하는 함수를 의미한다. 순위함수, 집계함수, 통계함수라고 불리기도 한다. 윈도우 함수는 다음과 같이 사용이 가능하다.SELECT WINDOW_FUNCTION(ARGUMENTS) OVER (PARTITION BY ~ ORDER BY ~)FROM TABLE; 예를 들어 테이블 A에서 최대 값을 구한다고 치자. 기본적으로 GROUP BY를 사용하면 다음과 같이 구하게 된다. SELECT MAX(A.salary)FROM EMP AGROUP BY A.dept; 하지만 윈도우 함수를 사용하게 되면 다음과 같이 사용이 가능하다. SELECT MAX(A.salary) OVER(PARTITION BY A.dept)FROM EMP A; 그렇다면 왜 윈도우함수를 사용하.. 2025. 1. 12. 이전 1 2 3 4 다음