복붙노트

[SQL] 왜 & 언제 스파 스 열을 사용 하는가? (SQL 서버 2008)

SQL

왜 & 언제 스파 스 열을 사용 하는가? (SQL 서버 2008)

SQL 서버 2008의 새로운 기능 "스파 스 열"에 대한 몇 가지 자습서를 통해 가기 후에, 나는 열 값이 0 또는 NULL이지만 값이있을 때, 그것은 4 배의 공간이 정기적으로 걸리는 경우가 어떤 공간을 차지하지 않는 것으로 나타났습니다 (비 희소) 항목 보유하고있다.

내 이해가 정확하다면, 왜 나는 데이터베이스 설계시 그 갈 것인가? 나는 그를 사용하는 경우 그리고 어떤 상황에서 나는 것인가?

또한 호기심, 열이 스파 스 열로 정의 할 때 공백이 예약되지 얻을 않는 방법 (내가 말하는 뜻, 그것을위한 내부 구현은 무엇인가?)

해결법

  1. ==============================

    1.값을 저장하는 공간의 크기를 4 배 사용하지 않는 희소 열은, 그것이 (고정) 4 추가 바이트 당 널이 아닌 값을 사용한다. (이미 언급 한 바와 같이, NULL은 0 공간을합니다.)

    값을 저장하는 공간의 크기를 4 배 사용하지 않는 희소 열은, 그것이 (고정) 4 추가 바이트 당 널이 아닌 값을 사용한다. (이미 언급 한 바와 같이, NULL은 0 공간을합니다.)

    은 "예상 절약"종류의 컬럼의 우리가 무슨 말을하는지에 크게 의존하며, 그래서 어떤 비율의 당신의 추정은 null이 아닌 대 null이됩니다. 가변 폭 컬럼 (VARCHAR에) 아마 조금 더 어려운 정확하게 예측한다.

    이 온라인 페이지는 혜택과 함께 결국에 null을 할 필요가 다른 데이터 유형의 몇 퍼센트 테이블 보여주는 있습니다.

    그래서 때 당신은 스파 스 열을 사용해야합니까? 당신이 예상하는 경우 행의 상당한 비율은 NULL 값을 가질 수 있습니다. 마음에 와서 몇 가지 예 :

  2. ==============================

    2.단점

    단점

    참고

  3. ==============================

    3.당신은 잘못을 읽고 - 그것은 공간을 4 배 필요하지 않습니다.

    당신은 잘못을 읽고 - 그것은 공간을 4 배 필요하지 않습니다.

    특히, 4 * (4 바이트, 각주 참조), (곱하기 4로)하지 배를 말한다. 정확히 공간을 4 배있어 유일한 경우는 NULL을이 시간 이상 64 % 존재하는 경우 절감 효과를 볼 것 CHAR (4)입니다.

    "* 길이는 타입에 포함 된 데이터를 생성 할 수 있으며, 2 또는 4 바이트의 평균과 동일하다. '

  4. ==============================

    4.

    | datetime NULL      | datetime SPARSE NULL | datetime SPARSE NULL |
    |--------------------|----------------------|----------------------|
    | 20171213 (8 bytes) | 20171213 (12 bytes)  | 20171213 (12 bytes)  |
    | NULL     (8 bytes) | 20171213 (12 bytes)  | 20171213 (12 bytes)  |
    | 20171213 (8 bytes) | NULL      (0 bytes)  | NULL      (0 bytes)  |
    | NULL     (8 bytes) | NULL      (0 bytes)  | NULL      (0 bytes)  |
    

    당신은 그냥 행에 한 번 4 바이트를 잃게; 하지만 행의 모든 ​​셀이이 null이 아닙니다.

  5. ==============================

    5.- 2008 - 스파 스 열 소개 - SQL 서버에서 2 부 PINAL 데이브의 :

    - 2008 - 스파 스 열 소개 - SQL 서버에서 2 부 PINAL 데이브의 :

  6. from https://stackoverflow.com/questions/1398453/why-when-should-i-use-sparse-column-sql-server-2008 by cc-by-sa and MIT license