데이터량이 많고 INSERT DELETE가 빈번한 테이블 속도 개선방법
조회 쿼리에 최적화된 인덱스 생성
인덱스 rebuild > 인덱스 analyze 하기(통계정보 생성)
'DEV > DB' 카테고리의 다른 글
데이터 최근수정시간 확인 (0) | 2014.03.10 |
---|---|
sybase 간단사용법 (0) | 2013.11.20 |
중복 데이터 삭제 방법 (0) | 2013.11.08 |
데이터량이 많고 INSERT DELETE가 빈번한 테이블 속도 개선방법
조회 쿼리에 최적화된 인덱스 생성
인덱스 rebuild > 인덱스 analyze 하기(통계정보 생성)
데이터 최근수정시간 확인 (0) | 2014.03.10 |
---|---|
sybase 간단사용법 (0) | 2013.11.20 |
중복 데이터 삭제 방법 (0) | 2013.11.08 |
오라클 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 절을 통해 조건 또한 걸 수 있다.
속도개선 (0) | 2014.12.03 |
---|---|
sybase 간단사용법 (0) | 2013.11.20 |
중복 데이터 삭제 방법 (0) | 2013.11.08 |
◎ 테이블 복사
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
데이터 최근수정시간 확인 (0) | 2014.03.10 |
---|---|
중복 데이터 삭제 방법 (0) | 2013.11.08 |
Group By 에서 문자열 합치기 - 버전별 정리 (0) | 2013.09.26 |
중복 데이터 삭제 방법
방법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;
sybase 간단사용법 (0) | 2013.11.20 |
---|---|
Group By 에서 문자열 합치기 - 버전별 정리 (0) | 2013.09.26 |
win7 에서 oracle 설치시 문제 발생 (0) | 2013.06.21 |
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 ; |
중복 데이터 삭제 방법 (0) | 2013.11.08 |
---|---|
win7 에서 oracle 설치시 문제 발생 (0) | 2013.06.21 |
oracle dedicated server & shared server (0) | 2012.06.04 |
javaw.exe의 동작이 중지되었습니다.
=> jdk 설치
oui.exe 의 동작이 중지되었습니다.
=> 경로가 너무 길거나 한글이 포함되어 있어서 발생
Group By 에서 문자열 합치기 - 버전별 정리 (0) | 2013.09.26 |
---|---|
oracle dedicated server & shared server (0) | 2012.06.04 |
Oracle CHAR vs VARCHAR2 (0) | 2011.07.12 |
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
win7 에서 oracle 설치시 문제 발생 (0) | 2013.06.21 |
---|---|
Oracle CHAR vs VARCHAR2 (0) | 2011.07.12 |
대소문자 구분 (0) | 2011.04.10 |
oracle dedicated server & shared server (0) | 2012.06.04 |
---|---|
대소문자 구분 (0) | 2011.04.10 |
테이블 description (0) | 2011.03.25 |
[출처] 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’;
Oracle CHAR vs VARCHAR2 (0) | 2011.07.12 |
---|---|
테이블 description (0) | 2011.03.25 |
mssql 호환성 변경 (0) | 2011.03.25 |
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', 컬럼명
대소문자 구분 (0) | 2011.04.10 |
---|---|
mssql 호환성 변경 (0) | 2011.03.25 |
[MSSQL][tip] identity 증가값 설정 (0) | 2011.01.17 |