트리거란특정 이벤트가 발생하였을 때 동작합니다.특정 이벤트에 포함되는지 검사하기 위해 쿼리 수행마다 트리거를 확인하는 작업이 필요합니다. 트리거가 미치는 성능 테스트트리거 생성 전 테스트트리거를 생성하지 않고 trg_table 을 생성 한 후 20,000 건을 INSERT 합니다. SET NOCOUNT ON CREATE TABLE trg_table (C1 INT, C2 VARCHAR(500))GO DECLARE @ST DATETIMEDECLARE @ET DATETIMEDECLARE @I INTSET @I = 1SET @ST = GETDATE()WHILE @I
Database
게시판의 구성 방식 구성 설명 블록 검정색 네모박스로, 페이지의 집합을 의미합니다. 페이지 주홍색 네모박스로, 게시글의 집합을 의미합니다. 이전/다음 블록 이동 녹색 네모박스로, 블록의 이동을 의미합니다. 이전/다음 페이지 이동 파란색 네모박스로, 페이지의 이동을 의미합니다. 테스트에 사용된 샘플 테이블은SQL Server 에서 제공하는 AdventureWorks 데이터베이스이 Sales.SalesOrderDetail 테이블 입니다.해당 테이블의 건수는 121,317 건이고, SalesOrderDetailID 컬럼에 DESC 정렬의 인덱스를 생성했습니다. 한 블록에는 10개의 페이지가, 한 페이지에는 10개의 게시글이 존재하고 있습니다.페이징 기법이 처리되지 않은 프로시저를 먼저 보고, 페이징 기법이 처..
이번 포스팅은 정말 주관적인 생각입니다. 테이블의 총 건수를 알고싶은 경우 COUNT(*)를 사용하여야 합니다.이는 DB입장에서 메타에 총 건수를 저장하여 COUNT(*)를 호출했을 때 해당 메타 정보를 반환하지 않는 한,언제나 Full Scan을 해야한다는 상당히 고비용의 작업이 요구됩니다. 따라서 실시간 서비스를 하는 입장에서는 부담이 큽니다. 개인적으로 생각한 대안의 방법으로는 (이 방법이 좋은지 않좋은지는 알 수 없습니다. 상황에 따라 많이 다르기도 하고요.)물리적으로 테이블 명과 해당 테이블의 레코드 수를 저장하는 테이블을 하나 더 만들어서 그곳에 데이터를 넣는 방법을 사용하면 어떤지 생각해 봅니다. 예시로 어떤 쿼리를 보겠습니다. (문법은 무시해 주시고 의미만 파악해주시길 부탁드립니다.)INS..
윈도우 함수 개요 기존 관계형 데이터베이스는 컬럼과 컬럼간의 연산, 비교, 연결이나 집합에 대한 집계는 쉬운 반면,행과 행간의 관계를 정의하거나, 비교, 연산하는 것을 하나의 SQL 문으로 처리하는 것은 매우 어렵습니다. PL/SQL 같은 절차형 프로그램을 사용하거나, INLINE VIEW 를 이용해 복잡한 SQL 문을 작성해야 하던 것을 부분적이나마 행과 행간의 관계를 쉽게 정의하기 위해 만든 함수가 윈도우 함수입니다. 분석함수(ANALYTIC FUNCTION)나 순위함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수는 데이터웨어하우스에서 발전한 기능입니다.윈도우 함수는 다른 함수와는 달리 중첩해서 사용하지는 못하지만, 서브쿼리에서는 사용할 수 있습니다. 윈도우 함수의 종류 및 문법 윈도우 함..
DBA 란 Database Administration 해석하면 데이터베이스 관리 입니다.데이터베이스에 관련된 모든 관리를 하는 직업군을 의미한다고 보시면 좋습니다. DBA 가 하는일 그럼 모든 관리에는 어떤것들이 속할까요? [개발단계] 에서는 아래와 같은 일을 합니다.1. 기획안 분석 후 데이터베이스 관계모델 설계2. 테이블 생성 및 프로시져 작성3. 인덱스, 정규화, 비정규화 등의 튜닝작업 [운영단계] 에서는 아래와 같은 일을 합니다.1. 데이터베이스 관리2. 백업 그렇다면 여기에서 데이터베이스 관리에 한번더 궁금증이 들어갑니다. 어떤 관리지?먼저 말하면 데이터베이스가 갑작스런 사태로 인해 죽는사태를 사전에 예방하는 역할을 말합니다.1. 디스크관리 : 로그를 작성하던 중 디스크 풀로 인해 데이터베이스 ..
gsql 데이터베이스에 접속하여 SQL 구문을 처리하는 대화형 유틸리티입니다.또한 gsql 고유의 명령어를 통해, 객체 정보를 종료할 수 있습니다. gsql 은 DA 모드 / gsqlnet 은 CS 모드 방식으로 데이터베이스에 접속합니다. gsql 접속방법 일반적인 접속 방법입니다.gsql 명령어 뒤에 아이디와 비밀번호를 입력해서 접속할 수 있습니다.접속시 gSQL> 프롬프트가 출력되며, 옵션으로 해당명칭을 바꿀 수 있습니다.$ gsql TEST test Connected to GOLDILOCKS Database. gSQL>$ gsql TEST test --prompt M-gSQL Connected to GOLDILOCKS Database. M-gSQL> gsqlnet 명령어는 CS 모드이며 DSN 명칭..
ANSI/ISO SQL 표준에서 정의한 함수란? AGGREGATE FUNCTION GROUP AGGREGATE FUNCTION 이라고도 부릅니다.COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수들이 포함됩니다. GROUP FUNCTION 집계함수를 제외하고, 소그룹 간의 소계를 계산하는 ROLLUP, GROUP BY 항목들간 다차원적인 소계를 계산하는 CUBE, 특정항목에 대한 소계를 계산하는 GROUPING SETS 함수가 있습니다. WINDOW FUNCTION 분석함수(ANALYTIC FUNCTION)나 순위함수(RANK FUNCTION)로도 알려져 있는 윈도우 함수는 데이터웨어하우스에서 발전된 기능입니다. ROLLUP 함수ROLLUP 에 지정된 Grouping Columns 의 Li..
서브쿼리란? 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다. 서브쿼리 사용시 주의사항 1. 서브쿼리를 괄호로 감싸서 사용한다.2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다.3. 서브쿼리에서는 ORDER BY 를 사용하지 못한다. 서브쿼리가 사용 가능한 곳 1. SELECT 절2. FROM 절3. WHERE 절4. HAVING 절5. ORDER BY 절6. INSERT 문의 VALUES 절7. UPDATE 문의 SET 절 서브쿼리의 분류 단일 행 서브 쿼리 서브쿼리가 단일 행 비교 연산자(=, =, )와 함께 사용할 때는 서브쿼리의 결과 건수가 반드시 1건 이하여야 합니다.만약 결과가 2건 이상인 경우 오류가 발생합니다. 단일 행 쿼리의 예제만약 T2 테이블의 ..
계층형 질의 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의를 사용합니다.계층형 데이터란 동일 테이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말합니다. ORACLE 의 계층형 질의 계층형 질의 문법SELECT FROM 테이블 WHERE condition AND condition ... START WITH condition CONNECT BY [NOCYCLE] condition AND condition ... [ORDER SIBLING BY column, column ...] 문법의 의미 구문 의미 START WITH 계층 구조 전개의 시작 위치를 지정하는 구문이다. 루트 데이터를 지정이다. CONNECT BY 다음에 전개될 자식 데이터를 지정하는 구문이다. 자식 데..
집합연산자 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회하는 방법 중에 또 다른 방법이 있는데 집합연산자를 사용하는 방법입니다.집합 연산자는 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식을 사용합니다.집합 연산자를 사용하기 위해서는 SELECT 절의 컬럼 수가 동일하고, 동일 위치에 존재하는 컬럼의 데이터 타입이 상호 호환 가능해야 합니다. 집합 연산자의 종류 집합 연산자 연산자 의미 UNION 여러 개의 SQL 문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 출력 UNION ALL 여러 개의 SQL 문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시 INTERSECT 여러 개의 SQL 문의 결과에 대한 교집합으로 중복된 행은 하나의 행으로 출..