..
DEV/DB (46)
속도개선
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

데이터량이 많고 INSERT DELETE가 빈번한 테이블 속도 개선방법

 

조회 쿼리에 최적화된 인덱스 생성

 

인덱스 rebuild > 인덱스 analyze 하기(통계정보 생성)

'DEV > DB' 카테고리의 다른 글

데이터 최근수정시간 확인  (0) 2014.03.10
sybase 간단사용법  (0) 2013.11.20
중복 데이터 삭제 방법  (0) 2013.11.08
  Comments,     Trackbacks
데이터 최근수정시간 확인
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

오라클 10g 이상부터는 ORA_ROWSCN 활용 가능.


※ORA_ROWSCN

가장 최근에 SCN(System Change Number) 값을 반환.



테이블의 데이터가 수정된 시간을 관리하는 칼럼이 없을 경우 사용하면 유용.

※예시

SELECT ORA_ROWSCN,
             SCN_TO_TIMESTAMP(ORA_ROWSCN)
FROM 테이블명


SCN_TO_TIMESTAMP 를 활용해서 시간을 구할 수 있다.

단, SCN_TO_TIMESTAMP 함수는 변환가능한 시간에 제약이 있는데 대략 5일 미만

이렇게 로우들이 각각 마지막으로 수정될 시간을 구할 수 있으며,

WHERE 절을 통해 조건 또한 걸 수 있다.

 

출처 : http://20140501.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-ORAROWSCN-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B5%9C%EC%A2%85%EC%88%98%EC%A0%95-%EC%8B%9C%EA%B0%84-%ED%99%95%EC%9D%B8


 


'DEV > DB' 카테고리의 다른 글

속도개선  (0) 2014.12.03
sybase 간단사용법  (0) 2013.11.20
중복 데이터 삭제 방법  (0) 2013.11.08
  Comments,     Trackbacks
sybase 간단사용법
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

◎ 테이블 복사


select col1, col2 into new_table

from old_table


참고사이트

http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTextView/22065;pt=22568



◎ 테이블 조인 후 업데이트

update t1 set t1.c1 = t1.c1 + 50
from t1, t2
where t1.c1 = t2.c1
and t2.c2 = 1

◎ 서브쿼리 이용 업데이트

update t1 set c1 = c1 + 50
where t1.c1 in (select t2.c1
                from t2 
                where t2.c2 = 1)

참고사이트
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc20023_1251/html/optimizer/optimizer133.htm


'DEV > DB' 카테고리의 다른 글

데이터 최근수정시간 확인  (0) 2014.03.10
중복 데이터 삭제 방법  (0) 2013.11.08
Group By 에서 문자열 합치기 - 버전별 정리  (0) 2013.09.26
  Comments,     Trackbacks
중복 데이터 삭제 방법
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

중복 데이터 삭제 방법


방법1)

tab1 : 중복데이터가 있는 테이블


중복 데이터 제거 후 더미테이블 생성

create table dummy_tab1

as

select distinct col1, col2

from tab1;


rename tab1 to tab_back;

rename dummy_tab1 to tab1;


※ 고민해야할 부분

index, 테이블 권한, 참조테이블 등등... 유지할 수 있는 방법..



방법2)


delete from tab1 t

where rowid > (

select min(rowid) from tab1

where col1 = t.col1

and    col2 = t.col2

)


commit;

'DEV > DB' 카테고리의 다른 글

sybase 간단사용법  (0) 2013.11.20
Group By 에서 문자열 합치기 - 버전별 정리  (0) 2013.09.26
win7 에서 oracle 설치시 문제 발생  (0) 2013.06.21
  Comments,     Trackbacks
Group By 에서 문자열 합치기 - 버전별 정리
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
WITH t(type, name, code) AS
(
SELECT '과일', '사과', '0' FROM dual
UNION ALL SELECT '과일', '레몬', '1' FROM dual
UNION ALL SELECT '과일', '포도', '2' FROM dual
UNION ALL SELECT '과일', '참외', '3' FROM dual
UNION ALL SELECT '채소', '오이', '0' FROM dual
UNION ALL SELECT '채소', '당근', '1' FROM dual
UNION ALL SELECT '채소', '호박', '2' FROM dual
)
SELECT type
     , SUBSTR(XMLAgg(XMLElement(x, ',', name) ORDER BY code).Extract('//text()'), 2) name_9i
     , wm_concat(name) name_10g
     , ListAgg(name, ',') WITHIN GROUP(ORDER BY code) name_11g
  FROM t
 GROUP BY type
 ORDER BY type
;


10g에서 수정

1
2
3
4
WITH t AS
(
SELECT '과일' AS type, '사과' AS name, '0' AS code FROM dual
-- 이하 마농님 코드와 동일합니다.




1
2
3
4
5
6
7
-- MySQL --
SELECT type
     , group_concat(name ORDER BY code) name_MySQL
  FROM t
 GROUP BY type
 ORDER BY type
;
1
2
3
4
5
6
7
8
9
10
11
12
-- MSSQL 2005 --
SELECT type
     , STUFF((SELECT ',' + name
                FROM t
               WHERE type = a.type
               ORDER BY code
                 FOR XML PATH('')
              ), 1, 1, '') name_MSSQL
  FROM t a
 GROUP BY type
 ORDER BY type
;

[출처] http://oracleclub.com/article/55512

'DEV > DB' 카테고리의 다른 글

중복 데이터 삭제 방법  (0) 2013.11.08
win7 에서 oracle 설치시 문제 발생  (0) 2013.06.21
oracle dedicated server & shared server  (0) 2012.06.04
  Comments,     Trackbacks
win7 에서 oracle 설치시 문제 발생
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

javaw.exe의 동작이 중지되었습니다.

=> jdk 설치


oui.exe 의 동작이 중지되었습니다.

=> 경로가 너무 길거나 한글이 포함되어 있어서 발생


출처 : http://pupum.blog.me/90102020155

'DEV > DB' 카테고리의 다른 글

Group By 에서 문자열 합치기 - 버전별 정리  (0) 2013.09.26
oracle dedicated server & shared server  (0) 2012.06.04
Oracle CHAR vs VARCHAR2  (0) 2011.07.12
  Comments,     Trackbacks
oracle dedicated server & shared server
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

tnsora 파일에 db 접속 정보 옵션에 shared로 접속할지 dedicated로 접속할지 지정할 수 있다.

 

만약에 트래픽이 높은 경우는 dedicated로 설정해야 한다.

 

생략할 경우 기본이 dedicated 인것으로 추측된다.

 

 

 

아래는 현재 oracle이 어떠한 모드로 접속되어 있는지 확인 하는 쿼리 이다.

 

SQL> select server from v$session where rownum <= 1;

SERVER
---------
DEDICATED

 

 

참고 사이트

 

http://blog.naver.com/PostView.nhn?blogId=luiseree&logNo=58137465

'DEV > DB' 카테고리의 다른 글

win7 에서 oracle 설치시 문제 발생  (0) 2013.06.21
Oracle CHAR vs VARCHAR2  (0) 2011.07.12
대소문자 구분  (0) 2011.04.10
  Comments,     Trackbacks
Oracle CHAR vs VARCHAR2
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

CHAR 와 VARCHAR2의 차이점은 다음 예를 보면 알 수 있을 것이다.

CHAR(5) 에 'A'를 입력할 경우 DB내부에서는 5 SPACE를 차지한다.(5자리모두설정)VARCHAR2(5) 에 'A'를 입력할 경우 DB내부에서는 1 SPACE를 차지한다.(최대5자저장가능)
많은 사람들이 유연성과 효율성때문에 VARCHAR2를 사용하고 있고,개발상 또는 관리상의편의를 위해 DATE형으로 입력할 DATA도 많이 VARCHAR2를 사용한다.하지만 저장공간의 효율성이 있는 만큼 단점도 있다.

CHAR는 모든 자리수를 꽉 채우는 것을 원칙으로 하기 때문에 DBMS에 추가적인 LOGIC의 발생이없다.하지만 VARCHAR2는 전체자리수중 실제 사용된 것만 채워주고 나머지는 다른 DATA에 양보하므로 내부적으로 추가적인 LOGIC이 발생한다.
VARCHAR2의 갯수가 많으면 많을 수록 계산의 양도 많아진다.특히 VARCHAR2를 사용한 칼럼이INDEX COLUMN이거나 KEY(PRIMARY OR FOREIGN KEY) COLUMN이라면 더욱 그렇다.
따라서,KEY값들은 CHAR로 잡고 변동이 많은 COLUMN은 VARCHAR2로 잡아주는 것이 바람직하다.

CHAR를 KEY값으로 사용할 때는 주의할 점이 있다.SQL문을 직접 사용하면 잘 나타나지 않지만 개발TOOL을 사용할 경우 KEY COLUMN을 꽉 채워주지 않으면 JOIN을 생성못하는 경우가 있다.

A TABLE : A CHAR(3) PRIMARY KEY
B TABLE : A CHAR(3) PRIMARY KEY


A.A에 '1'을 입력하고 B.A에 '1'을 입력하여 두 테이블에 RELATION을 걸면 조회되지 않는다.(디벨로퍼2000의 경우)남아있는 SPACE때문에 발생하는 일이므로 KEY COLUMN을 CHAR로 잡아줄때는 반드시 꽉 채워준다. 관리상으로도 훨씬 수월해진다.예)LPAD(A.A,3,'0')->'001'LPAD(B.A,3,'0')->'001'


http://yarrrrchoi.blogspot.com/2009/04/oracle-char-varchar2.html

'DEV > DB' 카테고리의 다른 글

oracle dedicated server & shared server  (0) 2012.06.04
대소문자 구분  (0) 2011.04.10
테이블 description  (0) 2011.03.25
  Comments,     Trackbacks
대소문자 구분
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[출처] http://www.hgjung.pe.kr/Blog/post/2009/09/25/1143.aspx
기본적으로 데이터베이스는 대소문자를 인식하지 못한다.

그래서 대소문자를 인식하기 위해서 설정을 해야한다.

 

한글 문자 collate name
Korean_Wansung_CI_AS ==> 대소문자 미구분
Korean_Wansung_CS_AS ==> 대소문자 구분

 

테이블

ALTER TABLE [TABLE_NAME]

ALTER COLUMN [COLUMN_NAME] varchar(10) COLLATE Korean_Wansung_CS_AS;

 

스토어프로시저

 

1. 데이터 구분

DECLARE @Char char(1), @Result varchar(20);

SET @Char=’a’;

SET @Result =

(CASE @Char COLLATE KOREAN_WANSUNG_CS_AS

    WHEN ‘A’ THEN ‘A 입니다.’

    WHEN ‘a’ THEN ‘a 입니다.’

    ELSE ‘알수없음’

END)

 

일반구문

SELECT * FROM [Table_Name]

WHERE [Column_Name] COLLATE KOREAN_WANSUNG_CS_AS = ‘a’;



'DEV > DB' 카테고리의 다른 글

Oracle CHAR vs VARCHAR2  (0) 2011.07.12
테이블 description  (0) 2011.03.25
mssql 호환성 변경  (0) 2011.03.25
  Comments,     Trackbacks
테이블 description
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
테이블을 만들고 Description을 달고 싶은 경우
 
1. 주석추가 (add)
//테이블

EXEC   sp_addextendedproperty 'MS_Description', '테이블설명', 'user', dbo, 'table',테이블명
//컬럼들
EXEC   sp_addextendedproperty 'MS_Description', '컬럼설명', 'user', dbo, 'table', 테이블명, 'column', 컬럼명

 

2. 주석수정 (update)

//테이블

EXEC   sp_updateextendedproperty 'MS_Description', '테이블설명', 'user', dbo, 'table',테이블명

//컬럼들

EXEC   sp_updateextendedproperty 'MS_Description', '컬럼설명', 'user', dbo, 'table', 테이블명, 'column', 컬럼명


[출처] http://blog.naver.com/PostView.nhn?blogId=mslovely84&logNo=110034218148&redirect=Dlog&widgetTypeCall=true

'DEV > DB' 카테고리의 다른 글

대소문자 구분  (0) 2011.04.10
mssql 호환성 변경  (0) 2011.03.25
[MSSQL][tip] identity 증가값 설정  (0) 2011.01.17
  Comments,     Trackbacks