source

INNODB -> 기본 열이 0이어야 합니까 아니면 null이어야 합니까?

factcode 2023. 8. 22. 22:32
반응형

INNODB -> 기본 열이 0이어야 합니까 아니면 null이어야 합니까?

제 영어 실력이 조금 약합니다. 죄송합니다.

INNODB를 사용할 때 열이 0이어야 합니까, 아니면 null이어야 합니까?

조인된 열을 0으로 정의하면 문제가 발생합니까?

마지막으로, 성능 면에서 어느 것이 더 좋습니까?

감사해요.

문제를 무시합니다.다음을 제공할 필요는 없습니다.DEFAULT값. 열을 선언할 필요가 없습니다.NULL(또는)NOT NULL).

대신에...

응용 프로그램에 대해 생각해 보십시오.

사례 1: 응용 프로그램은 항상 해당 열에 대한 값을 가지고 있으며 항상 값을 지정합니다.그런 다음 열을 다음으로 선언합니다.NOT NULL그리고 제공하지 않습니다.DEFAULT말이 되는군요.

사례 2: 당신은 아직 가치가 없습니다.예:테이블은start_date그리고.end_date당신은 그것이 "시작"할 때 행을 만들고, 그래서 당신은 다음을 채웁니다.start_date(사례 1 참조) 그러나 떠나십시오.end_date비어 있습니다. "비어 있음"은 다음과 같이 인코딩될 수 있습니다.NULL그리고.DEFAULT NULL나중에 너UPDATE기입할 표end_date진가를 발휘하여

사례 3: 테이블에는 "카운터"가 있습니다.처음에 행을 추가할 때 카운터는 "1"로 시작해야 합니다.나중에 당신은 할 것입니다.UPDATE ... SET counter=counter+1행을 만들 때 "1"을 명시적으로 넣거나 삽입할 때 값을 생략할 수 있지만 열이 선언되도록 할 수 있습니다.NOT NULL DEFAULT '1'

NULL는 "아직 채워지지 않음"(사례 1), "값을 알 수 없음", "기본값 사용" 등을 나타낼 수 있습니다.이것은 응용프로그램 선택사항입니다.

의 다른 용도가 있습니다.NULL당신이 사용하지 않는 한NULL각 열을 선언합니다.NOT NULL.

만약, 언제INSERTing모든 열을 지정하면 다음이 필요하지 않습니다.DEFAULTs.DEFAULTs필요한 것이 아니라 편리한 것입니다.를 사용DEFAULT숫자에 대해 "0"을 얻습니다.NOT NULL열, 또는''현용의

성능 - 문제가 아닐 수도 있습니다.우리가 논의해야 할 특별한 예가 있습니까?

JOINing나는 아마도 있을 수 있는 칼럼에 참여하는 것을 피할 것입니다.NULL한 열에 있는 행의 고유 식별자에 다른 테이블에 있는 열과 함께 조인하기 때문에 "실제"에서는 이러한 일이 거의 발생하지 않습니다.

 FROM A  JOIN B  ON B.id = A.b_id

그것은,B.id아마도.PRIMARY KEYB의, 그러므로, 그럴 수 없습니다.NULL반면에,A.b_id그럴 수도 있겠지요NULL행이 없음을 나타냄B의 행에 해당하는A.괜찮아요.

언급URL : https://stackoverflow.com/questions/56051412/innodb-should-the-default-column-be-zero-or-null

반응형