2009-09-02 2 views
0

인데, 인덱싱/큐어링 등의 측면에서 다른 것보다 성능이 뛰어날까요?데이터베이스 필드의 비교/성능이 int 대 char (1)

1/0

이 일화는 사람들이 (1) 반면 문자를 사용하는 것을 선호 보인다 대부분의 장소를 말하기 값 활성 CHAR (1) 'Y'/ 'N'값 대 is_active TINYINT로 열을 선언 내 경향/사용하기 쉽기 때문에 적어도 tinyint/int로 선언하는 것입니다/

실제 성능 비교가 있습니까? oracle (비트 맵 인덱스 또는 일부)에서 이진 값 인덱스와 같은 것을 기억합니다. sql2005/sql2008/...과 비슷한 것이 있습니까?

UPDATE가 - 아래의 댓글 중 일부에 대한 응답으로, 성능이 인덱스 쿼리/업데이트의 정의 될 것이다, 스토리지는 너무

의미를 충분히 저렴 관련이없는 고려 무관하다!

답변

3

문자/VARCHAR이있는 모든 열은 인덱싱 중 등 편지 번역/정렬, 평등 테스트의 의미에 대해서는 별도의 내부 코드의 모든 과정을 전송의 가능성 등이있다

그래서, 수 더 나은. 그리고 비트은 설명하는 경우에 가장 적합한 솔루션입니다. 0 또는 1 만 저장합니다 (물론 null 허용).

SQL 서버 각 바이트의 8 개 비트 필드를 저장할하기 위해 내부적으로 붕괴 비트 필드를 않기 때문에 여러 비트 필드가 있다면 그것은 TINYINT보다 효율적입니다 : 예를

http://msdn.microsoft.com/en-us/library/ms177603.aspx

+0

비트 필드를 인덱싱 할 수 없으므로 quering ....에 쓸모가 없으므로 tinyint/smallint/int/bigint 열에도 의미 문제가 발생합니다! – Kumar

+0

비트 필드를 색인 할 수 있습니다. 값이 두 개 뿐이므로 거의 유용하지 않습니다. 다른 종류의 열에 두 개의 값을 저장하고 인덱스하는 경우 해당 인덱스는 제대로 수행되지 않습니다. – richardtallent

+0

추가 정보 : http : // stackoverflow.com/questions/231125/should-i-index-a-bit-field-in-sql-server – richardtallent

1

있습니다를 Oracle의 정수 또는 논리 데이터 유형. 비트 맵 인덱스는 다른 데이터 유형의 열 값에서 파생 된 것과 다른 것입니다.

0

모든 RDBMS 제품이 부울 데이터 유형을 지원하면 좋을 것입니다. 그럼 우리는이 질문을 죽일 수 있습니다. 그것이 그렇듯이, 그것은 개인적인 취향에 이릅니다. 나는 ... 쉽게 이해하기

if is_active = 'Y' then 

...보다는 ...

if is_active = 1 then 

을 찾을하지만 영어 대신 프랑스어를 말한다면 나는 반면,이 O/N되고 싶은 것 1/0 구현은 보편적입니다. 핵심은 시스템 전체에서 단일 규칙을 사용하는 것입니다.

성능면에서 가장 큰 병목 현상이 char (1)과 정수 사이의 차이 일 경우 나는 당신의 튜닝 능력에 경의를 표합니다.

+0

시스템이 아직 구현되지 않았으므로 병목 현상이 발생하지는 않습니다 ... 그러나 이것은 실시간 리스크 관리 용 앱이므로 밀리 초마다 부스트가 좋을 것입니다. – Kumar