質問: 実際にやろうとしていることとしては、userをカスタマーかクライアント(フラグ的な役割)に分けるときにdbに文字列でカスタマーもしくはクライアントで保存するかenumを使用して0をカスタマー、1をクライアントとして保存するか迷っています。
回答: 都道府県の扱いによって分かれます。 ひとつのモデルで単に都道府県名が必要というのですと文字で持って十分です。 都道府県自体になにかの属性を持たせたり、methodを持たせたりする、つまり都道府県というモデルも作る様は場合はidでもたせます。 ソートは数値の方が早いです。 ソートは必ず a と b の比較を行いますが、数値ですと 64bit が一回の比較で終わります。 文字ですと、(最大)文字数だけ比較を繰り返します。おまけに、64bitを8bitに区切って比較するというのはCPUに余分な作業を行わせるので更に遅くなります。