MSSQL에서 현재 찾는 데이터 Row에서 앞, 뒤 Row를 찾는 방법 WITH PREANDNEXT AS ( SELECT ROW_NUMBER() OVER (ORDER BY ROWID DESC) AS RN,[COLUMN1], [COLUMN2], [COLUMN3] FROM 테이블 이름 WHERE 조건 값 ) SELECT A.RN, A.[COLUMN1], A.[COLUMN2], A.[COLUMN3], B.PREID AS PREID, C.NEXTID AS NEXTID FROM PREANDNEXT A LEFT JOIN PREANDNEXT B ON A.RN = B.RN - 1 LEFT JOIN PREANDNEXT C ON A.RN = C.RN + 1 WHERE 조건값 ORDER BY 정렬
현재 MSSQL에서 기본 사용하는 트랜잭션(유화IS팀에서도 사용, 단점은 BEGIN TRAN을 명시적으로 사용 하지 않으면 자동 Commit되기때문에 잘못된 데이터 입력시 Rollback 불가) - 자동 커밋 트랜잭션 (그래서 저희에서 Update나 Delete할때 명시적 트랜잭션을 사용중) ORACLE에서 기본 사용하는 트랜잭션(단점은 SQL문 끝날때마다 Commit or Rollback 을 해줘야 함) - 암시적 트랜잭션 (자동으로 BEGIN TRAN만 붙어줌. 직접 Commit tran, Rollback tran을 써줌) 암시적 트랜잭션을 MSSQL에서 사용하시고 싶으면 아래와 같이 세팅해주시면 됩니다. SET IMPLICIT_TRANSACTIONS ON MSSQL 실행계획보기set statisti..
테이터베이스 테이블 리스트 정보 확인 select *from information_schema.tablesWHERETABLE_CATALOG = '' 테이블 컬럼 정보 확인select * from information_schema.columnswhere table_name = '' 테이블 제약조건 확인 select*from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEwhere table_name = '' 테이블 인덱스 확인 확인 SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(N'데이터베이스명'), OBJECT_ID(N'데이터베이스명.테이블명'), NULL, NULL , 'DETAILED');
데이터베이스별 누락된 인덱스SQL Server가 쿼리를 처리할 때 최적화 프로그램은 쿼리를 수행하기 위해 사용하려고 시도한 인덱스에 대한 기록을 보관합니다. 이러한 인덱스가 없는 경우 SQL Server는 누락된 인덱스에 대한 기록을 만듭니다.SELECT DatabaseName = DB_NAME(database_id) ,[Number Indexes Missing] = count(*) FROM sys.dm_db_missing_index_detailsGROUP BY DB_NAME(database_id)ORDER BY 2 DESC; sys.dm_db_missing_index_details 누락된 인덱스 기록 테이블 비용이 높은 누락된 인덱스인덱스가 쿼리 성능에 미치는 영향의 정도는 다양합니다. 서버에 있는 모..
오늘은 Database 관련 책을 읽으면서 정규화에 대해 보게 되었습니다.항상 많이 듣고 보지만 저에게는 항상 이해하기 어렵네요. 그래서 여러 Blog를 통해 배운 정보 글로 남겨요. ※ 잘못된 정보가 있으면 알려주세요^^ 1. 하나의 테이블에 유사한 데이터를 저장하는 필드을 여러 개 사용하지 않습니다. 개별 테이블에서 반복되는 그룹을 제거합니다.관련 데이터의 각 집합에 대해 별도의 테이블을 만듭니다.기본 키를 사용하여 관련 데이터의 각 집합을 식별합니다. 문제점) 부서가 추가 될 경우 테이블을 스키마를 수정 해야 함 2. 레코드는 테이블의 기본 키에만 종속 되어야 합니다. 여러 레코드에 적용되는 값 집합에 대해 별도의 테이블을 만듭니다.이러한 테이블을 연결할 때는 외래 키를 사용합니다. 문제점) 부서명..
Oracle 힌트 정리 글 퍼와서 공유 합니다. 힌트의 사용법 {SELECT | INSERT | UPDATE | DELETE} /*+ hint [text] [hint [text]] ... */ 혹은 {SELECT | INSERT | UPDATE | DELETE} --+ hint [text] [hint [text]] ... - 이러한 힌트의 사용은 SQL 전체가 아닌 쓰여진 SQL 블럭에만 적용됩니다. 힌트의 종류 별 분류 Optimization Goals and Approaches ALL_ROWS 혹은 FIRST_ROWS CHOOSE RULE Acess Method Hints AND_EQUAL CLUSTER FULL HASH INDEX 혹은 NO_INDEX INDEX_ASC 혹은 INDEX_DESC IN..