2011-03-03 3 views
1

사용자 질문을위한 테이블이 있으며 각 질문에 "question_score"필드가 있습니다. 이 필드에 대해 NULL을 허용하면 일부 공간을 절약하거나 심지어 일부 CPU 시간을 절약 할 수 있습니까?NULL 또는 기본값을 설정하십시오

question_id (int) | quesion_name (varchar) | question_score (int) ...

+0

테이블 구조를 보여 주시겠습니까? –

+0

점수를 합산 해 주시겠습니까? 또는 다른 논리에서 사용 하시겠습니까? –

+0

큰 점수 질문 첫 번째 답변. – lovespring

답변

2

공간이나 CPU 시간을 절약하지 않습니다.

값이 NULL이라도 MySQL은 여전히이 사실을 저장해야합니다.

때로는 NULL 값을 허용하는 것이 옳은 일이지만, 이유가 존재하지 않는 공간 최적화 인 경우에는 분명히 허용되지 않습니다. 기본값은 일반적으로 이동하는 방법입니다.

0

제 생각에는 null 값은 항상 반복됩니다. 적어도 세 번째 레벨까지 database normalization을 적용하십시오. 아마도 DB 구조가 최적이 아닐 것입니다.

1

간단히 말해서, 아니오. 정확성에 관한 문제이지 성능에 관한 문제는 아닙니다. Null은 거의 항상 불일치와 부정확 한 결과를 초래합니다. 가장 좋은 전략은 달리 수행해야 할 특별한 이유를 찾을 때까지 그리고 널 (null)없이 Normal Form으로 데이터베이스를 설계하는 것입니다.

2

합리적인 대안이없는 한 데이터를 입력 한 시점의 값을 알 수없는 경우 null을 사용하십시오. 예를 들어 무언가의 이름을 모르는 경우 기본값이 '알 수 없음'일 수 있습니다. 그러나 종료 날짜를 모르는 경우 코드 작성을 항상 기억해야하는 가짜 데이터를 넣지 마십시오. 그리고 실제 값 (예를 들어 가격이 0 일 것)보다 가짜 인 데이터를 넣지 마십시오. 그렇지 않으면 값을 지정하지 않은 항목에 대해 말할 수 없게됩니다. Null은 적절하면 적절할 때 사용하십시오. 30 년 동안의 데이터베이스 경험에서 null보다 나은 가짜 데이터를 사용하는 것이 훨씬 어렵습니다. (정확한 결과를 반환하지 않지만 문제가 발생할 가능성이 훨씬 높습니다. 그러나 알지 못합니다.) 널 (null)을 적절히 처리한다.

+0

감사합니다. HLGEM – lovespring

관련 문제