실행계획(Execution plan) 분석하는 방법.



프로시저와 같은 디비 쿼리를 짜다보면 성능에 대한 의문이 듭니다.

이때 간단하게 확인해 볼 수 있는방법이 실행계획을 통한 확인입니다.



1. 예시 쿼리


SELECT *

FROM emp t1, dept t2

WHERE t1.dept_no = t2.dept_+no

AND not exists

       ( SELECT *

          FROM salgrade

          WHERE sal BETWEEN 1000 AND 2000)



2. 예시쿼리에 따른 실행 계획

 IDP_IDOperation Ojbect name
 0 

 SELECT STATEMENT

 
 1 0

     FILTER

 
 2 1

         NESTED LOOPS

 
 3 2

             TABLE ACCESS FULL

EMP 
 4 2

             TABLE ACCESS BY ROWID

DEPT
 5 4

                  INDEX UNIQUE SCAN

PK_DEPT
 6 1

         TABLE ACCESS FULL

SALGRADE



3. 실행 계획 분석.

A. 가장 먼저 실행되는부분이 가장 아래에 있는 ID가 5번인 INDEX UNIQUE SCAN 부분.

B. ID 5~ 4 단계는 DEPT테이블의 PK INDEx인 PK_DEPT 를 SCAN하여 얻은 ROWID로 DEPT 테이블을 ACCESS 한다.

C. 3번의 EMP 테이블의 ACCESS 방법은 Table Full Scan으로 읽어 4번과 Nested Loop 조인 하는 형식.

D. 다시 Nested Loop 된 결과는 Full Table Scan으로 읽은 SALGRADE 테이블에 의해 Filter 되어 결과가 나오게 된다.



4. 트리 구조로 확인하기.



5. 분석


A. Cost는 낮을수록 좋다.

B. Full Table Scan이 없을수록 좋다.




출처: http://www.jakartaproject.com/board-read.do?boardId=dbtip&boardNo=114193419425900&command=READ&t=1411017575107 


반응형

'Programming > Databse' 카테고리의 다른 글

[PostgreSql] Centos7에서 PostgreSql 설치  (0) 2017.06.15
[PostgreSql] 윈도우서버에서 PostgreSql 외부 접속 허용  (0) 2017.06.14
[Oracle] 대소문자 변환  (0) 2017.03.07
[Oracle] ORA-02292  (0) 2017.03.07
[Oracle] UPDATE  (0) 2017.02.17

오라클에서 Table검색시 

대소문자에 상관없이 검색하는 방법

검색결과를 대소문자로 변환하는 방법




UPPER/LOWER

검색결과를 대문자/소문자로 변경해준다.



e.g. 검색결과를 대문자/소문자로 나타내기.


SELECT UPPER(st.someCol) AS someCol

FROM someTable st;


SELECT LOWER(st.someCol) AS someCol

FROM someTable st;



e.g. 대소문자에 상관없이 검색하기.


SELECT *

FROM someTable

WHERE LOWER(someCol) = LOWER(searchKeyword);


SELECT *

FROM someTable

WHERE UPPER(someCol) = UPPER(searchKeyword);

반응형

'Programming > Databse' 카테고리의 다른 글

[PostgreSql] 윈도우서버에서 PostgreSql 외부 접속 허용  (0) 2017.06.14
[Database] 실행 계획 분석  (0) 2017.03.17
[Oracle] ORA-02292  (0) 2017.03.07
[Oracle] UPDATE  (0) 2017.02.17
[Oracle] ORA-00972  (0) 2017.02.17


ORA-02292

무결성 제약조건이 위배되었습니다 - 자식 레코드가 발견되었습니다.

Constraint violation - child records found



원인

삭제하고자하는 데이터가 다른 테이블의 pk 혹은 fk등 으로 사용되고 있음.



해결

삭제하고자하는 데이터를 사용하는 테이블에서 데이터를 먼저 삭제한다.

Constraint를 수정한다.

반응형

'Programming > Databse' 카테고리의 다른 글

[Database] 실행 계획 분석  (0) 2017.03.17
[Oracle] 대소문자 변환  (0) 2017.03.07
[Oracle] UPDATE  (0) 2017.02.17
[Oracle] ORA-00972  (0) 2017.02.17
[Oracle] Column 정보 수정하기.  (0) 2017.02.17


- contextMenu에서 다양한 타입의 아이템을 설정.




1. 기본 item설정.


items: {

"item1": {name: "Item1"},

"item2": {name: "Item2"}

}


2. text를 입력할 수 있는 text item설정.


items: { 

"Text": { 

name: "Text", 

type: 'text', 

value: "SomeValue", 

events: { 

keyup: function(e) {  

//keyup event 

}


3. Checkbox item설정


items: { 

"cb1" : { name: "Check Box 1", type: 'checkbox', selected: true }, 

"cb2" : { name: "Check Box 2", type: 'checkbox', selected: false } 

}


4. Radio item 설정


items: { 

"Radio1": { name: "Radio1", type: 'radio', radio: 'radio', value: '1'}, 

"Radio2": { name: "Radio2", type: 'radio', radio: 'radio', value: '2', selected: true },

"Radio3": { name: "Radio3", type: 'radio', radio: 'radio', value: '3', disabled: true } 

}


5. Select menu item 설정


items: { 

"SelectMenu": { 

name: "SelectMenu", 

type: 'select', 

options: {1: 'opt1', 2: 'opt2', 3: 'opt3'}, selected: 2 }

 }

}


6. 구분선 추가


items: { sep: "---------" }





반응형


1. 특성 픽셀로 길이 조정하기.


$( "#sel_ID" ).selectmenu( "option", "width", 100 );


#sel_ID를 id로 갖고있는 selectmenu의 width속성을 100px로 변경.




2. 내부 텍스트값에따라 자동으로 길이 조절하기.


$( "#sel_ID" ).selectmenu( "option", "width", "auto" );


#sel_ID를 id로 갖고있는 selectmenu의 width속성을 내부 텍스트 길이에 맞춰서 변경.

반응형



Row정보 Update하기.



UPDATE #TABLE_NAME#

SET #COL_NAME1# = #UPD_VAL1#,

#COL_NAME2# = #UPD_VAL2#

WHERE #CONDITION#;


Ex)

UPDATE student

SET student_rank = 1,

student_name = 'someName'

WHERE student_key = 23;

반응형

'Programming > Databse' 카테고리의 다른 글

[Database] 실행 계획 분석  (0) 2017.03.17
[Oracle] 대소문자 변환  (0) 2017.03.07
[Oracle] ORA-02292  (0) 2017.03.07
[Oracle] ORA-00972  (0) 2017.02.17
[Oracle] Column 정보 수정하기.  (0) 2017.02.17



ORA-00972

Identifier is too long

식별자가 너무 깁니다.




원인 : 식별자의 길이다 너무 길게 설정함.


해결 : 식별자의 길이를 30자보다 짧게 수정합니다.

반응형

'Programming > Databse' 카테고리의 다른 글

[Database] 실행 계획 분석  (0) 2017.03.17
[Oracle] 대소문자 변환  (0) 2017.03.07
[Oracle] ORA-02292  (0) 2017.03.07
[Oracle] UPDATE  (0) 2017.02.17
[Oracle] Column 정보 수정하기.  (0) 2017.02.17


1. MODIFY


ALTER TABLE #TABLE_NAME#

MODIFY #COL_NAME# #DATA_TYPE# (DEFAULT #DEFAULT_VAL#) (NOT NULL or NULL);


Ex)

ALTER TABLE someTable

MODIFY someCol NUMBER NULL



반응형

'Programming > Databse' 카테고리의 다른 글

[Database] 실행 계획 분석  (0) 2017.03.17
[Oracle] 대소문자 변환  (0) 2017.03.07
[Oracle] ORA-02292  (0) 2017.03.07
[Oracle] UPDATE  (0) 2017.02.17
[Oracle] ORA-00972  (0) 2017.02.17


$("#cb_id").change(function(){

    if($("#cb_id").is(":checked")){

//Check event

    }else{

        //Uncheck event

    }

});

반응형

<div></div>와 같은 태그들의 영역을 숨기는 방법.

    • style="display:none"
    • style="visibility:hidden"



  • style="display:none"
숨기고난 빈 영역을 다음 태그로 채운다.
빈공간이 남지 않는다.



  • style="visibility:hidden"
숨기고난 빈 영역을 그대로 둔다.
빈공간이 남아있다.


반응형

'Programming' 카테고리의 다른 글

[IBATIS] Execute Query 후 return 값  (0) 2017.05.02
[ASP] charset 변경  (0) 2017.03.28
[Language] 프로그래밍 언어 선택  (0) 2017.01.02
[ASP] 05. 오라클 데이터 베이스와 연동하기.  (0) 2016.12.20
[ASP] 04. 파일 읽기  (0) 2016.12.20

+ Recent posts