2010-12-29 2 views
3

열거 형 위에 tinyint (1)을 사용하는 경우 성능이나 호환성의 이유가 있습니까? 다른 것?MySQL의 부울 유형이 열거 형 대신 tinyint에 매핑되는 이유는 무엇입니까?

+0

* zero = false, non-zero = true *는 많은 언어에서 익숙한 개념이며 매우 간단합니다. 그러나 문자열을 사용하면 Y/N, T/F, 예/아니요, 참/거짓, TRUE/FALSE, s/no ... 등 여러 가지 가능성이 있습니다. –

+1

High Performance MySQL에 따르면 boolean을 저장하는 가장 효율적인 방법은 nullable CHAR (0)입니다. – guidoism

답변

2

MySQL indexes ENUMs with integers에 대해 관심을 가질 수 있습니다.

SQL 표준에는 1999 년부터 부울 데이터 형식이 포함되어 있습니다. 유효한 값은 true, false, unknown 또는 null입니다. Implementation across various database systems is spotty.

MySQL은 진정한 부울 데이터 유형을 지원하지 않습니다. BOOLEAN은 1 바이트 만 차지하는 TINYINT에 매핑됩니다. MySQL은 0을 거짓으로 해석하고 다른 모든 숫자는 참으로 해석합니다.

1

최대 8 개의 값을 갖는 열거 형이 바이트에 저장됩니다. tinyint는 int에도 저장됩니다. 그래서 아무런 차이가 없습니다. MySQL은 bool에 대해서는 전혀 모른다. 그래서 사람들은 성능 등을 위해 옵션 중 하나를 사용한다.