列挙型をデータベースに格納するには、文字列または整数の2つの方法があります。
列挙型(、、など)を文字列として保存するsex = {male,female}
とaccount_type = {regular,pro,admin}
、読みやすくなりますが、整数よりも多くのスペースが必要になります。
一方、整数では、データベースに列挙型をマッピングし、データベースから列挙型をマッピングする必要があります。利点として、大文字と小文字の区別はデータベースの外部で整数で処理されます。
両方にインデックスが付けられていると仮定すると、整数変換は一般的に価値がありますか?整数でのルックアップはどれくらい高速ですか?
例
おそらく、具体的な例が物事を視覚化するのに役立つ可能性があります。100,000ユーザーのデータベースで上記のaccount_typeを取り上げましょう。
文字列列挙型
8ビット固定長CHAR型を想定
7*100000*8/8 = 700000 bytes
整数列挙型
8ビットのTINYINT整数を想定
100000*8/8 = 400000 bytes
サイズは整数列挙型でほぼ半分のようです。また、インデックスを考慮する必要があります。