일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Oracle
- 쿼리
- framework
- javascript
- Runtime
- sql
- 채용공고
- mybatis
- 현재날짜 구하기
- ANTI PATTERN
- mave project
- 레지스트리
- 마켓보로
- Git
- Custom URI Schemes
- NSIS
- 튜닝
- DB
- Runtime.getRuntime.exec()
- spring framework
- 자바스크립트
- 자바에서 응용프로그램 실행
- 설치프로그램
- Java
- 안티 패턴
- MVC
- spring
- Stash
- CMD
- github
- Today
- Total
목록IT/DB (6)
corn-cheese
DB에서 INDEX 제대로 사용하기 작성자 : 김문규 최초 작성일 : 2009.5.18 데브피아에서 기가 막히게 좋은 전문가 글을 찾았습니다. 간단하게 정리해 봅니다. 인덱스를 사용하기를 기대하지만 그렇지 않은 기본적이고 대표적인 예입니다. 1. 인덱스 컬럼을 변형하여 비교할 때 BAD WHERE TO_CHAR(HIREDATE,'YYYYMMDD') = '19980518'; GOOD WHERE HIREDATE = TO_DATE('19980518') BAD WHERE SALARY + 1000 > 100000; GOOD WHERE SALARY > 100000 - 1000; 비교하는 인덱스 컬럼의 형이나 값을 변경하면 발생합니다. 이 경우에는 비교값을 변경해 주어야 인덱스를 사용하게 됩니다. 2. 비교 대상의 ..
/** * MD5 암호화 포맷팅 * @param {String} V_INPUT_STRING: login id * @return (String) ENCRYPTED_STRING : Encryped id */ CREATE OR REPLACE FUNCTION TOSS."FX_MD5_ENCRYPTION" (V_INPUT_STRING IN VARCHAR2) RETURN VARCHAR2 IS ENCRYPTED_STRING VARCHAR2(128); BEGIN IF V_INPUT_STRING IS NOT NULL THEN ENCRYPTED_STRING := LOWER(RAWTOHEX(UTL_RAW.CAST_TO_RAW(DBMS_OBFUSCATION_TOOLKIT.MD5(input_string=>V_INPUT_STRIN..
개발자라면 옵티마이저가 실행계획을 생성할 때, 최대한도로 성능을 발휘할 수 있도록 불필요한 로직을 타지 않게 쿼리를 작성해야 한다. 같은 결과를 산출하는 쿼리는 여러 가지 형태로 작성될 수 있으므로, 개발자는 SQL 문장 단에서 최대한 효율적인 문장을 작성해야 한다. "쿼리를 이렇게 작성하면 좋은 성능을 발휘한다"라는 일반적인 가이드 라인을 알아보자! 가급적 WHERE 조건에서는 인덱스 컬럼을 모두 사용한다. 인덱스를 만들어 놓더라도 WHERE 조건을 어떻게 명시하느냐에 따라 옵티마이저가 인덱스를 사용할 수도 있고 사용하지 않을 수도 있다. 예를 들어 A와 B라는 컬럼의 인덱스를 만들었는데, WHERE 조건에서 A 컬럼만 사용한다면 인덱스를 타지 않게 된다. 예) CONTRACT 테이블에서 CONTRAC..
쿼리 튜닝은 온라인 SQL이냐 대용량 배치 SQL이냐에 따라 튜닝방법이 달라집니다. 하지만 대용량 배치는 프로그램 수가 많지 않은 편입니다. 온라인 SQL 튜닝에서도 관점에 따라 튜닝방법이 다르게 됩니다. 예를 들어 Peak Time에 Insert 문이나 Update 문, Select 문이 집중적으로 몰릴 때의 튜닝 방법이 있고, 단순히 SQL 하나에 집중해서 응답시간을 최소화하는 튜닝방법이 있습니다. 본 포스팅은 일반적으로 가장 많은 튜닝 사례에 해당하는 Select문 튜닝방법론을 기술한 포스팅입니다. 학습 용도로 작성한 포스팅으로 본 포스팅의 원본 출처는 Science of Database 블로그 SQL 튜닝방법론 입니다. 온라인 Select문 튜닝 방법론 온라인 SQL의 튜닝방법은 여러 가지가 있을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CbHoP/btqCMnMDusB/iiCTqKk3wSyrTU0KCDLJk1/img.png)
조회한 다수의 SELECT 문을 하나로 합치고싶을때 유니온(UNION) 을 사용 할 수 있습니다. UNION 은 결과를 합칠때 중복되는 행은 하나만 표시해줍니다. UNION ALL 은 중복제거를 하지 않고 모두 합쳐서 보여줍니다. UNION 두개의 SELECT 결과를 합칠수 있습니다. 합친 결과에서 중복되는 행은 하나만 표시합니다. 단, 컬럼의 개수가 같아야하고, 각 컬럼의 데이터타입이 같아야합니다. 사용법 SELECT * FROM A UNION (ALL) SELECT * FROM B 기본테이블인 COUNTRIES테이블과 REGION 테이블을 UNION 해보겠습니다. 두개의 테이블을 UNION 하기위한 조건으로 컬럼의 갯수와, 타입이 같아야합니다. 때문에 COUNTRIES에서는 COUNTRY_NAME 과..
테이블에 데이터가 이미 존재하면 업데이트 하고, 존재하지 않으면 입력을 해야 하는 경우가 종종 있습니다. 오라클에서 이런 작업을 한번에 할 수 있는 쿼리가 MERGE INTO 문 입니다. 현실적인 예는 아니지만 간단하게 성적 테이블을 생각해 보겠습니다. 과정코드과 학생코드가 주키이고, 성적 필드를 가지고 있습니다. CREATE TABLE TB_SCORE ( COURSE_ID VARCHAR2(10) NOT NULL, STUDENT_ID VARCHAR2(10) NOT NULL, SCORE NUMBER(5, 2) NULL, CONSTRAINT PK_SCORE PRIMARY KEY (COURSE_ID, STUDENT_ID) ); 1. 동일한 테이블 구조를 가지고 있는 TMP_SCORE 테이블로부터 데이터를 옮기..