2010-12-29 12 views
3

enum上でtinyint(1)を使用する場合のパフォーマンスや互換性の理由はありますか?他に何か?なぜMySQLのboolean型は列挙型ではなくtinyintにマップされますか?

+0

* zero = false、non-zero = true *は多くの言語でよく知られた概念であり、非常に単純です。しかし、文字列を使用すると、Y/N、T/F、はい/いいえ、真/偽、TRUE/FALSE、s/no ... –

+1

ハイパフォーマンスMySQLによれば、ブール値を格納する最も効率的な方法は、nullを許容するCHAR(0)です。 – guidoism

答えて

2

MySQL indexes ENUMs with integersが知りたい場合があります。

SQL標準には、1999年以降ブール型のデータ型が含まれています。有効な値はtrue、false、unknownまたはnullです。 Implementation across various database systems is spotty

MySQLは真のブール型データ型をサポートしていません.BOOLEANはTINYINTにマップします.TINYINTは1バイトしか使用しません。 MySQLは0をfalseと解釈し、他のすべての値は真です。

1

最大8個の値を持つ列挙型が1バイトに格納されます。 tinyintもintに格納されます。だから違いはありません。 MySQLはboolについて全く知らないので、パフォーマンスのためにオプションのいずれかを使用します。これは違いはありません。

関連する問題