[SQL] 왜 & 언제 스파 스 열을 사용 하는가? (SQL 서버 2008)
SQL왜 & 언제 스파 스 열을 사용 하는가? (SQL 서버 2008)
SQL 서버 2008의 새로운 기능 "스파 스 열"에 대한 몇 가지 자습서를 통해 가기 후에, 나는 열 값이 0 또는 NULL이지만 값이있을 때, 그것은 4 배의 공간이 정기적으로 걸리는 경우가 어떤 공간을 차지하지 않는 것으로 나타났습니다 (비 희소) 항목 보유하고있다.
내 이해가 정확하다면, 왜 나는 데이터베이스 설계시 그 갈 것인가? 나는 그를 사용하는 경우 그리고 어떤 상황에서 나는 것인가?
또한 호기심, 열이 스파 스 열로 정의 할 때 공백이 예약되지 얻을 않는 방법 (내가 말하는 뜻, 그것을위한 내부 구현은 무엇인가?)
해결법
-
==============================
1.값을 저장하는 공간의 크기를 4 배 사용하지 않는 희소 열은, 그것이 (고정) 4 추가 바이트 당 널이 아닌 값을 사용한다. (이미 언급 한 바와 같이, NULL은 0 공간을합니다.)
값을 저장하는 공간의 크기를 4 배 사용하지 않는 희소 열은, 그것이 (고정) 4 추가 바이트 당 널이 아닌 값을 사용한다. (이미 언급 한 바와 같이, NULL은 0 공간을합니다.)
은 "예상 절약"종류의 컬럼의 우리가 무슨 말을하는지에 크게 의존하며, 그래서 어떤 비율의 당신의 추정은 null이 아닌 대 null이됩니다. 가변 폭 컬럼 (VARCHAR에) 아마 조금 더 어려운 정확하게 예측한다.
이 온라인 페이지는 혜택과 함께 결국에 null을 할 필요가 다른 데이터 유형의 몇 퍼센트 테이블 보여주는 있습니다.
그래서 때 당신은 스파 스 열을 사용해야합니까? 당신이 예상하는 경우 행의 상당한 비율은 NULL 값을 가질 수 있습니다. 마음에 와서 몇 가지 예 :
-
==============================
2.단점
단점
참고
-
==============================
3.당신은 잘못을 읽고 - 그것은 공간을 4 배 필요하지 않습니다.
당신은 잘못을 읽고 - 그것은 공간을 4 배 필요하지 않습니다.
특히, 4 * (4 바이트, 각주 참조), (곱하기 4로)하지 배를 말한다. 정확히 공간을 4 배있어 유일한 경우는 NULL을이 시간 이상 64 % 존재하는 경우 절감 효과를 볼 것 CHAR (4)입니다.
"* 길이는 타입에 포함 된 데이터를 생성 할 수 있으며, 2 또는 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.- 2008 - 스파 스 열 소개 - SQL 서버에서 2 부 PINAL 데이브의 :
- 2008 - 스파 스 열 소개 - SQL 서버에서 2 부 PINAL 데이브의 :
from https://stackoverflow.com/questions/1398453/why-when-should-i-use-sparse-column-sql-server-2008 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 다른 테이블에 새로운 행의 값 삽입 SQL 서버 트리거 (0) | 2020.05.10 |
---|---|
[SQL] 하나의 필드없이 entityframework에서 개체를 검색 (0) | 2020.05.10 |
[SQL] 그것은 MySQL의 저장 프로 시저에 대한 기본 매개 변수를 가질 수 있습니까? (0) | 2020.05.10 |
[SQL] 어떻게 ALTER TABLE 문에서 'DELETE CASCADE ON'추가 (0) | 2020.05.10 |
[SQL] 오라클에서 익명 테이블이나 VARRAY 유형 (0) | 2020.05.10 |