SlideShare a Scribd company logo
1 of 29
활용예시를 통한 SQL Server 2012 의
향상된 프로그래밍 기능 엿보기
DB 팀
임현수
개요
향상된 프로그래밍 기능 P a rt 1
 - 페이징 (O F FS E T/FE TC H )
 - 효율적인 채번 (S E Q U E N C E )
 - 경험치 비교 (An alytic F u n c tio n s )
향상된 프로그래밍 기능 P a rt 2
 - 집계처리 가속화 (C o lu m n S to re In d e x)
 - 쿼리분석기 1 20% 활용
  - 유용한 함수
마무리
개요
S Q L S e rve r 2005 ~ 2008 R2
향상된 프로그래밍 기능
-   RAN K () O VE R
-   RO W_N U MB E R () O VE R
-   C TE
-   ME RG E
-   F ilte re d In d e x
SQL Server 2012
향상된 프로그래밍 기능 Part 1
페이징 (FETCH/OFFSET)
페이징 (ro w_n u m b e r())                                         B e fo re
     select x.*
     from (
            select
                   top ( @PageNo * @PageSize)
            ,      row_number() over (order by col01 ) seqNo
            ,      col01, col02
            from dbo.tab01 with (readuncommitted)
            where col01 > @startArticleNo
            order by col01 ) x
     where x.seqNo between (@PageNo-1) * @PageSize and @PageNo * @PageSize -1
     order by x.col01;
페이징 (O F F S E T/F E TC H )
                                            A fte r
        select *
        from dbo.tab01 wtih (nolock)
        where col01 >= @startArticleNo
        order by col01
        offset (@PageNo-1)*@PageSize rows
        fetch next @PageSize rows only;
페이징 ( 정리 )


    항목       Row_number()       OFFSET/FETCH


   구문 복잡도    복잡 (11 lines)          단순 (6 lines)


    성능                  I/O 부하 동일

                   성능 개선효과는 없으나 ,
    의견
                     개발생산성 증대
효율적인 채번 (Sequence)
효율적인 채번 ( 임시 테이블 )
                                             B e fo re
    -- 임시테이블 생성
    create table SeqNo_tab (SeqNo int);
    Insert into SeqNo_tab values (1);

    -- 채번 성능 테스트
    declare @seqval int = 0, @cnt int = 0;

    while (@cnt <= 1000000)
    begin
         update SeqNo_tab set @seqval= SeqNo = SeqNo + 1;
         set @Cnt = @Cnt + 1;
    end
효율적인 채번 (S e q u e n c e )
                                                   A fte r
      -- 시퀀스 생성
      Create sequence SeqNo_cache10
      Start with 1
      Increment by 1
      Cache 10;
      go

      -- 채번 성능 테스트
      declare @seqval int = 0, @Cnt int = 0;

      while (@Cnt <= 1000000)
      begin
             SELECT @seqval = next value for SeqNo_cache10;
             set @Cnt = @Cnt + 1;
      end
효율적인 채번 ( 정리 )


     항목        임시테이블              SEQUENCE


  구문 복잡도                  유사

      성능                       21 초 (Nocache) or
               3 분 49 초
   (100 만건 )                      9 초 (Cache)
                    약 25 배 성능 개선 ,
     의견
                    범위 처리 함수 제공
경험치 비교 (Analytic Functions)
경험치 비교
경험치 비교 (s e lf j in )
                o
                                                               B e fo re
     select a.seqNo, a.CompareValue, b.CompareValue
     from tab_01 a with (readuncommitted)
     left outer join tab_01 b with (readuncommitted) on a.seqNo -1 = b.seqNo
     order by a.seqNo




                                                                   42 pages
경험치 비교 (An alytic F u n c tio n : LAG )
                                                                  A fte r
      select
             seqNo
      ,      compareValue
      ,      lag(compareValue, 1, 0) over (order by seqNo) as LagValue
      from tab_01 with (readuncommitted)
      order by seqNo




                                                                   2 pages
경험치 비교 ( 정리 )


    항목          Self join        Analytic Func (LAG)


  구문 복잡도                    유사


    성능          42 pages              2 pages

                   약 21 배 성능 개선 ,
    의견
                활용 빈도는 낮으나 매우 유용함
SQL Server 2012
향상된 프로그래밍 기능 Part 2
집계 쿼리 가속화 (ColumnStore
Idx)
집계 쿼리 가속화 (C o lu m n S to re In d e x)
집계 쿼리 가속화 ( 정리 )


      항목          Rowstore Index   Columnstore Index


      용량            1,500 MB            270 MB

      성능
                    1 분 19 초             0초
   (3500 만건 )

                      집계를 위한 최적의 솔루션임 .
      의견
                Columnstore Index 있는 경우 DML 사용 불가
쿼리분석기 120% 활용 (SSMS)
ZO O M 기능
쿼리창 분리
유용한 함수
유용한 함수
 카테고리        함수                    설명

           EMONTH()      해당월의 마지막 날짜 반환
 날짜함수
                         날짜 / 시간 , 숫자값을 원하는 포맷으로
           FORMAT()
                         변환
              IIF()      CASE 구문과 동일한 기능
 비교함수
           CHOOSE()      Index 위치의 변수값을 돌려주는 구문
                         함수내의 문자열을 하나의 문장으로 연
           CONCAT()
                         결
문자열함수
         TRY_CONVERT()   문자열 -> 날짜로 전환이 가능한지 확인
마무리     기본기          활용능력
                     (SQL Server,
      ( 모델링 , SQL)
                       Oracle)
[ 광고 ]
넥슨 D B 팀 블로그
h ttp ://n e xo n d b te am .tis to ry.c o m

More Related Content

What's hot

Java8 & Lambda
Java8 & LambdaJava8 & Lambda
Java8 & Lambda기현 황
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가Vong Sik Kong
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
Functional programming
Functional programmingFunctional programming
Functional programmingssuserdcfefa
 
Java 8 api :: lambda 이용하기
Java 8 api :: lambda 이용하기Java 8 api :: lambda 이용하기
Java 8 api :: lambda 이용하기rupert kim
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰beom kyun choi
 
Function & Closure about Swift
Function & Closure about Swift Function & Closure about Swift
Function & Closure about Swift KimDaeho
 
Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09fromitive
 
동작 파라미터와 람다 In java 8
동작 파라미터와 람다 In java 8동작 파라미터와 람다 In java 8
동작 파라미터와 람다 In java 8진우 이
 
Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Circulus
 
2.Startup JavaScript - 연산자
2.Startup JavaScript - 연산자2.Startup JavaScript - 연산자
2.Startup JavaScript - 연산자Circulus
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Circulus
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Circulus
 
Macro & compilation
Macro & compilationMacro & compilation
Macro & compilationIkhoon Eom
 
Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리Circulus
 

What's hot (20)

Java8 & Lambda
Java8 & LambdaJava8 & Lambda
Java8 & Lambda
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
6 function
6 function6 function
6 function
 
Functional programming
Functional programmingFunctional programming
Functional programming
 
Ch10
Ch10Ch10
Ch10
 
Ch11
Ch11Ch11
Ch11
 
Java 8 api :: lambda 이용하기
Java 8 api :: lambda 이용하기Java 8 api :: lambda 이용하기
Java 8 api :: lambda 이용하기
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
자바 8 학습
자바 8 학습자바 8 학습
자바 8 학습
 
Function & Closure about Swift
Function & Closure about Swift Function & Closure about Swift
Function & Closure about Swift
 
Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09Reverse Engineering 2015.02.09
Reverse Engineering 2015.02.09
 
동작 파라미터와 람다 In java 8
동작 파라미터와 람다 In java 8동작 파라미터와 람다 In java 8
동작 파라미터와 람다 In java 8
 
Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저Startup JavaScript 6 - 함수, 스코프, 클로저
Startup JavaScript 6 - 함수, 스코프, 클로저
 
2.Startup JavaScript - 연산자
2.Startup JavaScript - 연산자2.Startup JavaScript - 연산자
2.Startup JavaScript - 연산자
 
Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체Startup JavaScript 4 - 객체
Startup JavaScript 4 - 객체
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
Macro & compilation
Macro & compilationMacro & compilation
Macro & compilation
 
Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리Startup JavaScript 3 - 조건문, 반복문, 예외처리
Startup JavaScript 3 - 조건문, 반복문, 예외처리
 

Viewers also liked

sql server 고가용성
sql server 고가용성sql server 고가용성
sql server 고가용성cranbe95
 
TSQL in SQL Server 2012
TSQL in SQL Server 2012TSQL in SQL Server 2012
TSQL in SQL Server 2012Eduardo Castro
 
Column store indexes and batch processing mode (nx power lite)
Column store indexes and batch processing mode (nx power lite)Column store indexes and batch processing mode (nx power lite)
Column store indexes and batch processing mode (nx power lite)Chris Adkin
 
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.JAndrew J. Kim
 
Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014Antonios Chatzipavlis
 
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)Amazon Web Services Korea
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)Amazon Web Services Korea
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈NAVER D2
 
React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작Taegon Kim
 
개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지JungGeun Lee
 
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexEduardo Castro
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using GolangSeongJae Park
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksJuarez Filho
 
SQL Server 2016 novelties
SQL Server 2016 noveltiesSQL Server 2016 novelties
SQL Server 2016 noveltiesMSDEVMTL
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017LinkedIn
 

Viewers also liked (20)

sql server 고가용성
sql server 고가용성sql server 고가용성
sql server 고가용성
 
TSQL in SQL Server 2012
TSQL in SQL Server 2012TSQL in SQL Server 2012
TSQL in SQL Server 2012
 
Indian movies games
Indian movies gamesIndian movies games
Indian movies games
 
Sql rally 2013 columnstore indexes
Sql rally 2013   columnstore indexesSql rally 2013   columnstore indexes
Sql rally 2013 columnstore indexes
 
Column store indexes and batch processing mode (nx power lite)
Column store indexes and batch processing mode (nx power lite)Column store indexes and batch processing mode (nx power lite)
Column store indexes and batch processing mode (nx power lite)
 
3 indexes
3 indexes3 indexes
3 indexes
 
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
2011년 KTH H3 컨퍼런스 Track B, 세션4 "Advanced Git" by A.J
 
Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014Columnstore indexes in sql server 2014
Columnstore indexes in sql server 2014
 
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
10월 웨비나 - AWS 상에서 Microsoft SQL Server 운영의 모범 사례 살펴보기 (최정욱 솔루션즈 아키텍트)
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작React Native를 사용한
 초간단 커뮤니티 앱 제작
React Native를 사용한
 초간단 커뮤니티 앱 제작
 
개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지개발자들이 흔히 실수하는 SQL 7가지
개발자들이 흔히 실수하는 SQL 7가지
 
Intro to column stores
Intro to column storesIntro to column stores
Intro to column stores
 
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store IndexSQL 2016 Mejoras en InMemory OLTP y Column Store Index
SQL 2016 Mejoras en InMemory OLTP y Column Store Index
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 
Ionic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocksIonic adventures - Hybrid Mobile App Development rocks
Ionic adventures - Hybrid Mobile App Development rocks
 
SQL Server 2016 novelties
SQL Server 2016 noveltiesSQL Server 2016 novelties
SQL Server 2016 novelties
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017
 

Similar to 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, ScalabilityDongwook Lee
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3Seok-joon Yun
 
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin GuideJEONGPHIL HAN
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기NAVER D2
 
자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라Jong Gook Bae
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancementsbeamofhope
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차희동 강
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019min woog kim
 
Akug seminar2 asterisk_recipse1_r3_byxeny
Akug seminar2 asterisk_recipse1_r3_byxenyAkug seminar2 asterisk_recipse1_r3_byxeny
Akug seminar2 asterisk_recipse1_r3_byxenyKook Maeng
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍EunGi Hong
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개Terry Cho
 
Linq to object using c#
Linq to object using c#Linq to object using c#
Linq to object using c#병걸 윤
 
ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!WooYoung Cho
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템NAVER D2
 

Similar to 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기 (20)

Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, Scalability
 
Scalability
ScalabilityScalability
Scalability
 
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
[2015-06-26] Oracle 성능 최적화 및 품질 고도화 3
 
javascript02
javascript02javascript02
javascript02
 
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
#21.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_국비지원IT학원/실업자/재직자환급교육/자바/스프링/...
 
강의자료 2
강의자료 2강의자료 2
강의자료 2
 
Presto User & Admin Guide
Presto User & Admin GuidePresto User & Admin Guide
Presto User & Admin Guide
 
LeNet & GoogLeNet
LeNet & GoogLeNetLeNet & GoogLeNet
LeNet & GoogLeNet
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기
 
자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라자바프로그래머를 위한 스칼라
자바프로그래머를 위한 스칼라
 
제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements제1회 Tech Net Sql Server 2005 T Sql Enhancements
제1회 Tech Net Sql Server 2005 T Sql Enhancements
 
효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차효율적인Sql작성방법 3주차
효율적인Sql작성방법 3주차
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
 
Akug seminar2 asterisk_recipse1_r3_byxeny
Akug seminar2 asterisk_recipse1_r3_byxenyAkug seminar2 asterisk_recipse1_r3_byxeny
Akug seminar2 asterisk_recipse1_r3_byxeny
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍최소 편집 거리와 동적 프로그래밍
최소 편집 거리와 동적 프로그래밍
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
Linq to object using c#
Linq to object using c#Linq to object using c#
Linq to object using c#
 
ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템
 

활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

  • 1. 활용예시를 통한 SQL Server 2012 의 향상된 프로그래밍 기능 엿보기 DB 팀 임현수
  • 2. 개요 향상된 프로그래밍 기능 P a rt 1 - 페이징 (O F FS E T/FE TC H ) - 효율적인 채번 (S E Q U E N C E ) - 경험치 비교 (An alytic F u n c tio n s ) 향상된 프로그래밍 기능 P a rt 2 - 집계처리 가속화 (C o lu m n S to re In d e x) - 쿼리분석기 1 20% 활용 - 유용한 함수 마무리
  • 4. S Q L S e rve r 2005 ~ 2008 R2 향상된 프로그래밍 기능 - RAN K () O VE R - RO W_N U MB E R () O VE R - C TE - ME RG E - F ilte re d In d e x
  • 5. SQL Server 2012 향상된 프로그래밍 기능 Part 1
  • 7. 페이징 (ro w_n u m b e r()) B e fo re select x.* from ( select top ( @PageNo * @PageSize) , row_number() over (order by col01 ) seqNo , col01, col02 from dbo.tab01 with (readuncommitted) where col01 > @startArticleNo order by col01 ) x where x.seqNo between (@PageNo-1) * @PageSize and @PageNo * @PageSize -1 order by x.col01;
  • 8. 페이징 (O F F S E T/F E TC H ) A fte r select * from dbo.tab01 wtih (nolock) where col01 >= @startArticleNo order by col01 offset (@PageNo-1)*@PageSize rows fetch next @PageSize rows only;
  • 9. 페이징 ( 정리 ) 항목 Row_number() OFFSET/FETCH 구문 복잡도 복잡 (11 lines) 단순 (6 lines) 성능 I/O 부하 동일 성능 개선효과는 없으나 , 의견 개발생산성 증대
  • 11. 효율적인 채번 ( 임시 테이블 ) B e fo re -- 임시테이블 생성 create table SeqNo_tab (SeqNo int); Insert into SeqNo_tab values (1); -- 채번 성능 테스트 declare @seqval int = 0, @cnt int = 0; while (@cnt <= 1000000) begin update SeqNo_tab set @seqval= SeqNo = SeqNo + 1; set @Cnt = @Cnt + 1; end
  • 12. 효율적인 채번 (S e q u e n c e ) A fte r -- 시퀀스 생성 Create sequence SeqNo_cache10 Start with 1 Increment by 1 Cache 10; go -- 채번 성능 테스트 declare @seqval int = 0, @Cnt int = 0; while (@Cnt <= 1000000) begin SELECT @seqval = next value for SeqNo_cache10; set @Cnt = @Cnt + 1; end
  • 13. 효율적인 채번 ( 정리 ) 항목 임시테이블 SEQUENCE 구문 복잡도 유사 성능 21 초 (Nocache) or 3 분 49 초 (100 만건 ) 9 초 (Cache) 약 25 배 성능 개선 , 의견 범위 처리 함수 제공
  • 16. 경험치 비교 (s e lf j in ) o B e fo re select a.seqNo, a.CompareValue, b.CompareValue from tab_01 a with (readuncommitted) left outer join tab_01 b with (readuncommitted) on a.seqNo -1 = b.seqNo order by a.seqNo 42 pages
  • 17. 경험치 비교 (An alytic F u n c tio n : LAG ) A fte r select seqNo , compareValue , lag(compareValue, 1, 0) over (order by seqNo) as LagValue from tab_01 with (readuncommitted) order by seqNo 2 pages
  • 18. 경험치 비교 ( 정리 ) 항목 Self join Analytic Func (LAG) 구문 복잡도 유사 성능 42 pages 2 pages 약 21 배 성능 개선 , 의견 활용 빈도는 낮으나 매우 유용함
  • 19. SQL Server 2012 향상된 프로그래밍 기능 Part 2
  • 20. 집계 쿼리 가속화 (ColumnStore Idx)
  • 21. 집계 쿼리 가속화 (C o lu m n S to re In d e x)
  • 22. 집계 쿼리 가속화 ( 정리 ) 항목 Rowstore Index Columnstore Index 용량 1,500 MB 270 MB 성능 1 분 19 초 0초 (3500 만건 ) 집계를 위한 최적의 솔루션임 . 의견 Columnstore Index 있는 경우 DML 사용 불가
  • 24. ZO O M 기능
  • 27. 유용한 함수 카테고리 함수 설명 EMONTH() 해당월의 마지막 날짜 반환 날짜함수 날짜 / 시간 , 숫자값을 원하는 포맷으로 FORMAT() 변환 IIF() CASE 구문과 동일한 기능 비교함수 CHOOSE() Index 위치의 변수값을 돌려주는 구문 함수내의 문자열을 하나의 문장으로 연 CONCAT() 결 문자열함수 TRY_CONVERT() 문자열 -> 날짜로 전환이 가능한지 확인
  • 28. 마무리 기본기 활용능력 (SQL Server, ( 모델링 , SQL) Oracle)
  • 29. [ 광고 ] 넥슨 D B 팀 블로그 h ttp ://n e xo n d b te am .tis to ry.c o m

Editor's Notes

  1. 일부 개발자분들께서 SQL Server 2012 의 좋아진 점에 대한 문의가 올해초부터 종종 들어와서 다른 분들도 궁금해하실 듯 하여 제가 관심있게 보았던 기능에 대해서 간략히 소개드리고자 합니다 .
  2. 간략히 소개를 드렸는데 테스트스크립트나 상세한 내용이 궁금하신 분은 팀 블로그 참고 부탁드립니다 .