본문 바로가기

전체 글

(220)
[SQL] 속도 개선 TIP 쿼리 작성 및 DB처리 속도 개선을 위한 Tip 1. 인덱스 사용 필수 2. EXIST sub쿼리 사용시에도 인덱스 생성하여 속도개선 3. WHERE문의 정확한 설정 필요 (설정이 어려울 경우 hint사용-비권장) 4. 날짜컬럼은 vchar로 설계권장(TO_NUMBER 사용시 지연상황 발생) 5. ROWNUM, ROW_NUMBER(), ORDER BY 사용시 대량의 파일이 연산되므로 조건을 줄여 사용권장 6. LIKE문 사용시 컬럼 앞뒤로 %사용할 경우 인덱스 수행불가 ('찾는단어' || '%' 또는 '%' || '찾는단어'와 같이 하나만 사용시에는 인덱스 수행)
[SQL] 소계, 합계구하기 (ROLLUP, GROUPING_ID) 소계,합계: GROUP BY ROLLUP(컬럼1, 컬럼2) 합계: GROUP BY ROLLUP(컬럼1, 컬럼2) HAVING GROUPING_ID(컬럼1, 컬럼2) 참고 예제: http://gent.tistory.com/57 [Oracle|오라클] ROLLUP 합계, 소계 구하기 (GROUP BY) 오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하여 손쉽게 합계와 소계를 구할 수 있다. 1. GROUP BY 컬럼이 하나인 경우 : GROUP BY 절에 ROLLUP 함수를 추가한 후 그룹핑 컴럼을 인자로 넣는다. -- 가상 테이블.. gent.tistory.com
[DB] MSSQL 설정된 시퀀스(Sequence) 확인방법 해당 DB의 모든 Sequence를 확인 SELECT * FROM sys.objects WHERE type = 'SO' Sequence의 next value 확인 SELECT NEXT VALUE FOR sequence명
[SQL] MERGE (Insert, update를 설정) 단일 테이블 ORACLE MERGE INTO 타겟테이블 // 결과가 완료되는 테이블 USING DUAL ON (필드1= 비교할 대상) // 조건 WHEN MATCHED THEN // 존재하면 UPDATE UPDATE SET 타겟_필드1= 'aaa' ,타겟_필드2= 'bbb' WHEN NOT MATCHED THEN // 존재하지 않으면 INSERT INSERT (타겟_필드1, 타겟_필드2, 타겟_필드3....) VALUES( 'aaa' , 'bbb' , 'ccc' ); // MERGE문에서는 ; 를 포함 MSSQL MERGE INTO 타겟테이블 // 결과가 완료되는 테이블 USING (SELECT 1 AS DUM) X // 임의로 select문을 선언해야함 ON (필드1= 비교할 대상) // 조건 WHEN..
[DB] 테이블 Lock 해제 테이블이 Lock 설정되었을 경우 해제하기 위해서 확인해야할 내용입니다. SELECT A.SESSION_ID, B.SERIAL# FROM V$LOCKED_OBJECT A, V$SESSION B WHERE B.SID = A.SESSION_ID AND A.ORACLE_USERNAME = '계정명'; SELECT A.SID, A.SERIAL# FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C WHERE A.SID = B.SID AND B.ID1 = C.OBJECT_ID AND B.TYPE = 'TM' AND C.OBJECT_NAME = UPPER ('테이블명'); ​ ALTER SYSTEM KILL SESSION 'SID, SERIAL#';
[SQL] GROUP BY 개념적 정의 GROUP BY 출력하고자 하는 대상이 SUM, COUNT, AVG와 같이 계산되었을 때 출력되는 컬럼별로 통합하지 않고 출력시키는 기능 컬럼의 내용들을 개별적으로 확인하고자 할 경우 KEY가 되는 항목을 GROUP BY하여 사용 아래 예제는 전체 월급이 5000을 초과하는 JOB에 대해서 JOB과 월급여 합계를 조회하는 예입니다. 단 판매원(SALES)은 제외하고 월 급여 합계로 내림차순 정렬되어 있습니다. SELECT job, SUM(sal) "급여합계" FROM emp WHERE job != 'SALES' -- 판매원은 제외 GROUP BY job -- 업무별로 Group By HAVING SUM(sal) > 5000 -- 전체 월급이 5000을 초과하는 ORDER BY SUM(sal) DESC; ..
[SQL] INDEX 삭제 유니크 INDEX를 삭제하기위해 두가지 쿼리문을 이용 ALTER TABLE 테이블명 DROP CONSTRAINT PK명; DROP INDEX PK명;
[SQL] 특정 문자만 UPDATE Table에서 특정 문자만을 UPDATEUPDATE 테이블명SET 컬럼명 = REPLACE(컬럼명 ,'변경전 문자','변경후 문자')   예제 1MN_IDMN_NAMEINFOUSE_YNM00000이용자1관리자YM00001이용자2사용자Y AAA테이블에서 MN_ID에 M00이 포함된 내용을 찾아 M00을 M11로 UPDATE UPDATE AAASET MN_ID = REPLACE(MN_ID,'M00','M11')WHERE MN_ID LIKE '%M00%'  결과MN_IDMN_NAMEINFOUSE_YNM11000이용자1관리자YM11001이용자2사용자Y  예제2MN_IDMN_NAMEINFOUSE_YNM00000이용자1관리자YM00001이용자2사용자Y AAA테이블에서 MN_ID에 M00과 MN_NAME에 이용자라는..