값이 255를 초과하지 않을 것이라는 것을 알 때 작은 필드를 설정하는 데 이점이 있습니까?

StackOverflow https://stackoverflow.com/questions/1628551

문제

가능한 가장 작은 데이터 유형을 선택해야합니까, 예를 들어 값 1을 저장하는 경우 COL 데이터 유형이 무엇인지 중요하지 않으며 값이 동일한 메모리 크기를 차지할 수 있습니까?

문제는 또한, cuz는 항상 그것을 변환하고 응용 프로그램에서 놀아야합니다.


업데이트

값이 "a"인 경우 Varchar (1)과 Varchar (50)가 메모리 크기와 동일한 메모리 크기라고 생각합니다. int와 tinyint와 동일하다고 생각했습니다.

도움이 되었습니까?

해결책

항상 가능한 가장 작은 데이터 유형을 선택하십시오. SQL은 최대 값을 원하는 것을 추측 할 수 없지만 데이터 유형을 말하면 저장 및 성능을 최적화 할 수 있습니다.


업데이트에 답변하려면 :

varchar 당신이 사용하는 것만 큼 많은 공간을 차지하고 있으므로 캐릭터 "a"가 아무리 큰 a에 상관없이 1 바이트 (라틴 인코딩)를 차지한다고 말할 때 옳습니다. varchar 당신이 선택한 필드. SQL의 다른 유형의 필드는 그렇지 않습니다.

그러나 모든 것을 바르 차르 필드로 만들면 공간의 효율성을 희생 할 것입니다. 모든 것이 고정 크기 필드 인 경우 SQL은 간단한 일정한 시간 곱셈을 수행하여 배열과 같은 값을 찾을 수 있습니다. Varchar 필드가있는 경우 데이터가 어디에 있는지 확인하는 유일한 방법은 이전 필드 (링크 된 목록과 같은)를 통해 저장하십시오.

SQL을 시작한다면 때로는 매우 적은 양의 텍스트와 때로는 매우 많은 양의 텍스트 (블로그 게시물과 같은)가있는 필드를 가질 것으로 예상하지 않는 한 Varchar 필드에서 멀리 떨어져있는 것이 좋습니다. 가변 길이 필드를 언제 최상의 효과로 사용 해야하는지 아는 데 경험이 필요하며 대부분의 시간조차 모릅니다.

다른 팁

시스템 설계에 특별한 성능 고려 사항입니다. 일반적으로 SQL Server 데이터 페이지에 더 많은 데이터를 넣을수록 성능이 향상됩니다.

SQL Server의 한 페이지는 8K입니다. ints 대신 작은 ints를 사용하면 더 많은 데이터를 단일 페이지에 넣을 수 있지만 그만한 가치가 있는지 여부를 고려해야합니다. 당신이 1 분에 수천 번의 히트를 제공한다면, 그렇습니다. 이것이 취미 프로젝트 또는 수십 명의 사용자 만 볼 수있는 무언가라면 중요하지 않습니다.

이점은 거기에 있지만, 행이 많고 LOS의 작동을 수행하지 않으면 중요하지 않을 수 있습니다. 성능 향상과 스토리지가 작은 것입니다.

전통적으로 페이지 크기에 저장된 모든 비트는 약간의 속도 향상을 의미합니다. 좁은 행은 페이지 당 더 많은 행을 의미하므로 메모리 소비가 적고 IO 요청이 적어 속도가 더 좋아집니다. 그러나 SQL Server 2008과 함께 페이지 압축 상황이 퍼지기 시작합니다. 압축 알고리즘은 바이트보다 255 미만의 값으로 4 바이트 INT를 압축 할 수 있습니다.

행 압축 알고리즘은 127의 값에 대해 단일 바이트에 4 바이트 INT (int가 서명 됨), 32768 미만의 값에 대해 2 바이트를 저장합니다.

그러나 NICE 압축 기능이 Enterprise Edition 서버에서만 사용할 수 있다는 점을 감안할 때 가능한 가장 작은 데이터 유형을 사용하는 습관을 유지하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top