http://otsteam.tistory.com/138

'SQL' 카테고리의 다른 글

Oracle hint  (0) 2018.10.15
postgreSql 백업  (0) 2018.10.10
postgreSQL 백업스크립트  (0) 2018.10.10
컬럼값에서 HTML 태그 제거하기  (0) 2017.06.20
하이버네이트 API 문서  (0) 2017.06.19
JOIN 종류 정리  (0) 2017.06.18

http://postgresql.kr/docs/current/backup.html


https://www.tuwlab.com/ece/25787

'SQL' 카테고리의 다른 글

Oracle hint  (0) 2018.10.15
postgreSql 백업  (0) 2018.10.10
postgreSQL 백업스크립트  (0) 2018.10.10
컬럼값에서 HTML 태그 제거하기  (0) 2017.06.20
하이버네이트 API 문서  (0) 2017.06.19
JOIN 종류 정리  (0) 2017.06.18

1. basic

http://www.sqlines.com/postgresql/how-to/pg_dump_database_file

2. script

https://m.blog.naver.com/PostView.nhn?blogId=dimigozzang&logNo=220629436373&proxyReferer=https%3A%2F%2Fwww.google.com%2F


script 폴더 보완 및 9.6으로 수정


#!/bin/bash

#I need user and password

export PGUSER=user

export PGPASSWORD=

DBNAME=dbname

#Where should i save pg dump-s?

TARGET=/mnt/seeme

if [ ! -d "/mnt/seeme/" ];then

    mkdir /mnt/seeme

fi

#Give pg_dump location

PGDUMP=/usr/lib/postgresql/9.6/bin/pg_dump

#Give me psql location

PSQL=/usr/lib/postgresql/9.6/bin/psql

#Give me psql connection port

PORT=5432

BEFOREDATE=$(date '+%Y-%m-%d' -d '10 day ago')

echo BEFORDATE

rm -rf $TARGET/dbname-$BEFOREDATE.sql

$PGDUMP -h 127.0.0.1 -p $PORT -U $PGUSER -d $DBNAME -f $TARGET/dbname-`date +%Y-%m-%d`.sql

'SQL' 카테고리의 다른 글

Oracle hint  (0) 2018.10.15
postgreSql 백업  (0) 2018.10.10
postgreSQL 백업스크립트  (0) 2018.10.10
컬럼값에서 HTML 태그 제거하기  (0) 2017.06.20
하이버네이트 API 문서  (0) 2017.06.19
JOIN 종류 정리  (0) 2017.06.18


SQLite AUTOINCREMENT is a keyword used for auto incrementing a value of a field in the table. We can auto increment a field value by using AUTOINCREMENT keyword when creating a table with specific column name to auto increment.

The keyword AUTOINCREMENT can be used with INTEGER field only.

Syntax

The basic usage of AUTOINCREMENT keyword is as follows −

CREATE TABLE table_name(
   column1 INTEGER AUTOINCREMENT,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
);

Example

Consider COMPANY table to be created as follows −

sqlite> CREATE TABLE COMPANY(
   ID INTEGER PRIMARY KEY AUTOINCREMENT,
   NAME           TEXT      NOT NULL,
   AGE            INT       NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);


출처: https://www.tutorialspoint.com/sqlite/sqlite_using_autoincrement.htm

'SQL > SQLITE' 카테고리의 다른 글

sqlite using autoincrement  (0) 2017.08.14

CREATE FUNCTION [DBO].[UDF_STRIPHTML] (@HTMLText VARCHAR(MAX))

RETURNS VACHAR(MAX) AS

BEGIN
  DECLEARE @Start INT
  DECLEARE @End INT
  DECLEARE @Length INT
  SET @Start  = CHARINDEX('<' ,@HTMLText )
  SET @End   = CHARINDEX('>' ,@HTMLText, CHARINDEX('<', @HTMLText ) )
  SET @Length = (@End - @Start) + 1
WHILE @Start > 0 AND  @End > 0 AND @Length > 0
BEGIN

    SET @HTMLText = STUFF((@HTMLText,@Start,@Length,'' )

    SET @Start =  CHARINDEX('<' ,@HTMLText )

    SET @End =  CHARINDEX('>' ,@HTMLText, CHARINDEX('<', @HTMLText ) )

    SET  @Length = (@End - @Start) + 1

END
RETURN LTRIM(RTRIM(@HTMLText))
END

 

'SQL' 카테고리의 다른 글

postgreSql 백업  (0) 2018.10.10
postgreSQL 백업스크립트  (0) 2018.10.10
컬럼값에서 HTML 태그 제거하기  (0) 2017.06.20
하이버네이트 API 문서  (0) 2017.06.19
JOIN 종류 정리  (0) 2017.06.18
Hash Join  (0) 2017.06.18
http://docs.jboss.org/hibernate/orm/5.2/javadocs/

공식페이지 http://hibernate.org/orm/

'SQL' 카테고리의 다른 글

postgreSQL 백업스크립트  (0) 2018.10.10
컬럼값에서 HTML 태그 제거하기  (0) 2017.06.20
하이버네이트 API 문서  (0) 2017.06.19
JOIN 종류 정리  (0) 2017.06.18
Hash Join  (0) 2017.06.18
인덱스 사용이 불가한 경우  (0) 2017.06.12

1 . JOIN Method

 

▷ 조인의 종류 (수행 알고리즘에 따른 분류)

 ◎ Nested-Loop JOIN (중첩 루프 조인)

 ◎ Sort Merge JOIN (병합조인)

 ◎ Hash JOIN (해시 조인)

 ◎ Remote JOIN (리모트 조인)

 

로우가 많아 질수록 쿼리의 코스트(Cost)는 높아진다. 당연히 처리할 데이터가 많기 때문이다.

이렇게 모두 비례적으로 성능의 떨어지지만 떨어지는 정도에는 차이가 있다.

우선 Loop가 가장 기본적인 방법이며, 양이 적을 때에는 성능이 좋지만 데이터가 많아질 수록 비용도 급격히 증가한다.

Merge 방식은 데이터가 적을 경우에는 Loop 보다는 못하지만, 양이 많아 질 수록 더 뛰어난 성능을 보인다. (여러 조건들이 있음)

Hash 방식은 데이터가 얼마 없을 경우에는 그 오버헤드(Overhead)로 인하여 성능이 좋지 않지만, 데이터가 많을수록 Loop 보다는 낮고 Merge 보다는 못하게 비용이 증가한다.

 

1) Nested-Loop JOIN (중첩 루프 조인)

한 집합의 원소 값을 다른 집합의 원소 값과 매칭해 나가는 방법

(가능한 모든 경우를 조회하여 결과 집합을 찾는 방법)

 

성능을 높이기 위한 방법

  가) 후행테이블의 크기가 작을수록

  나) 요소들의 비교가 빠르게 이루어 지도록 인덱스가 미리 설정되어 있어야 한다.

 

* 선행테이블(Driving Table) : 찾는 주체가 되는 테이블

* 후행테이블(Driven Table) : 비교 대상이 되는 테이블

 

▷ 예제

 --Nested-Loop Join

SELECT *

FROM pubs.dbo.employee e inner loop join pubs.dbo.jobs j

on e.job_id = j.job_id

 

[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]

첨부 이미지

옵티마이저는 통계를 기반으로 로우의 크기가 작은 쪽을 후행테이블로 선택한다. 여기서 선행 테이블(Driving Table)은 Employee 테이블이다. 선행 테이블 Employee 를 기준으로 Nested Loop 해서 Jobs 테이블을 조인한다.

쿼리 분석기의 실행계획에서는 선행테이블의 선이 굵게 나타난다. Nested Loop 조인은 가장 기본적인 조인 전략으로 데이터 량이 적은 경우에는 이보다 확실한 방법이 없다.

 

2) Sort Merge JOIN (병합 조인) 

한집합과 다른 집합을 합하기 위해서 양쪽 다 정렬이 되어 있어야만 비교 가능하다. 그리고 Sort Merge의 경우 대등하게 합병되기 때문에 선행 또는 후행 테이블이 존재하지 않는다.

 

▷ 예제

 --Sort Merge Join

SELECT *

FROM pubs.dbo.employee e inner merge join pubs.dbo.jobs j

on e.job_id = j.job_id

 

[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]

첨부 이미지

 

 

3) Hash JOIN (해시 조인)  

해시를 사용하는 경우는 해당 조인 키가 전혀 정렬되어 잇지 않고, 인덱스도 존재하지 않으면서 비교해야 할 대상은 많은 때이다.

 

▷ 예제

 --Hash Join

SELECT *

FROM pubs.dbo.employee e inner hash join pubs.dbo.jobs j

on e.job_id = j.job_id

 

[쿼리 분석기에서 Ctrl+L 을 눌러 실행계획을 실행]

 첨부 이미지

HASH JOIN 상세 참고

http://ksewookk.blog.me/100117311222

 

'SQL' 카테고리의 다른 글

컬럼값에서 HTML 태그 제거하기  (0) 2017.06.20
하이버네이트 API 문서  (0) 2017.06.19
JOIN 종류 정리  (0) 2017.06.18
Hash Join  (0) 2017.06.18
인덱스 사용이 불가한 경우  (0) 2017.06.12
결합인덱스 사용 시 선행컬럼 선정순서  (0) 2017.06.12

http://blog.naver.com/salinokl/221013481130

'SQL' 카테고리의 다른 글

하이버네이트 API 문서  (0) 2017.06.19
JOIN 종류 정리  (0) 2017.06.18
Hash Join  (0) 2017.06.18
인덱스 사용이 불가한 경우  (0) 2017.06.12
결합인덱스 사용 시 선행컬럼 선정순서  (0) 2017.06.12
인덱스 사용에 대한 일반적인 오해  (0) 2017.06.12

인덱스는

 

Root Node -> Branch Node -> Leaf Node로 구성된다.

 

이런 구조하에서 인덱스는 인덱스 사용이 비효율적인 경우나 비교불가능한 경우 인덱스를 사용하지 않게 된다.

 

1. 인덱스 사용이 비효율적인 경우

  

    - Optimizer가 비용계산을 통해 Full TAble Scan 이 좋다고 판단하는 경우

   

    - 사실 Full Table Scan 이 항상 나쁘거나 Index Scan이 항상 좋은 것은 아님

 

    - >=1 과 같은 조건문

 

2. 비교가 불가능한 경우

 

    - 인덱스가 걸려있는 컬럼에 변형이 발생할 경우 -> filter 조건은 절대 변형하지 말자 -> 매우 느려짐 -> 조건식 재작성과 함수기반 인덱스 사용

   

    - Null 비교 (IS NULL, IS NOT NULL) --> 물리모델링 시 Default 값을 확인하자.

 

    - 부정형 비교는 Random Access를 발생시키므로 되도록이면 긍정형으로 쓰고, 차라리 이럴땐 Full Table Scan이 효율적

   

    - Oracle에서는 양쪽의 데이터 타입이 같아야 하나 다른 경우

'SQL' 카테고리의 다른 글

JOIN 종류 정리  (0) 2017.06.18
Hash Join  (0) 2017.06.18
인덱스 사용이 불가한 경우  (0) 2017.06.12
결합인덱스 사용 시 선행컬럼 선정순서  (0) 2017.06.12
인덱스 사용에 대한 일반적인 오해  (0) 2017.06.12
MSSQL sys object 관리  (0) 2017.06.12

1. 조건절에 해당 컬럼이 항상 사용되는가

 

2. 조건절에는 항상 = 가 사용되는가 - 분포도보다 먼저 고려해야할 사항

 

3. 컬럼의 분포도가 좋은가 - 분포도가 좋다는 것은 고유한 값이 많다. -> 데이터처리범위가 좁다. -> 처리량이 적다.

 

4. 정렬을 대신할 수 있는가 - 정렬 연산은 비싸게 먹으므로 optimizer는 되도록 정렬을 피하려고 한다.

 

'SQL' 카테고리의 다른 글

Hash Join  (0) 2017.06.18
인덱스 사용이 불가한 경우  (0) 2017.06.12
결합인덱스 사용 시 선행컬럼 선정순서  (0) 2017.06.12
인덱스 사용에 대한 일반적인 오해  (0) 2017.06.12
MSSQL sys object 관리  (0) 2017.06.12
Stored Procedure 쓰는 이유  (0) 2017.06.02

+ Recent posts