- ベストアンサー
MySQLに格納するデータと検索速度
MySQLに都道府県のデータをinsertしたいのですが、「北海道」という文字にするか、置き換えて数字の「1」にしようか迷っています。 「北海道」という文字をinsertした場合は、取り出したときにそのまま表示できるので便利かなと思っています。 しかしながら、抽出する際に「北海道」という2バイト文字で検索するのもどうなのかと思っています。 抽出する際には数字の「1」などの方が早いような気もするのですが、数万件のデータだったら「北海道」などの2バイト文字を検索しても問題ないでしょうか? このような場合の定石がありましたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
都道府県名テーブルをつくりidを振り、必要に応じてINNER JOINでつなげる という流れでしょうね。 >「北海道」という2バイト文字で検索するのも それはそういう仕様だと思えばそんなにおかしなことはありません。 速さだけでいえば、この程度のことでは体感的に感じるスピードに 違いはないと思います。
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
>数万件のデータだったら「北海道」などの2バイト文字を検索しても問題ないでしょうか? 何百万件と操作すれば、体感できるくらいの差が出るかも知れませんが、数万件程度なら大差ないです。 前長野県知事が、「県名を信州にしよう」といった自論を展開したり、今後、道州制の導入に関し議論もあります。つまり、都道府県名は変わる可能性があるので、都道府県マスタを作って、idで対応付けた方がベターだと思います。
お礼
どうもありがとうございました。 参考になりました。
- saintandre
- ベストアンサー率31% (194/607)
一意な値の数は最大で47ですし本当にそれが原因で遅くなるようでしたらインデックスを追加すればいい話ですのであまり気にする必要は無いとおもいます。 ただし都道府県は全国地方公共団体コードで番号が定められており日本工業規格にも登録されているためこれに合わせて設定しておけばドキュメントが失われても関連を容易に推測できることから数字にしておくデメリットが少ないのも事実です。 また数字で扱いますとデータを新しいデータベースに移したら都道府県名が全て文字化けしていたなどの文字コードの問題も心配なくなります。 これらの条件をふまえて今回の場面で最適だとおもうものを導入すればよろしいかとおもいます。 全国地方公共団体コード http://ja.wikipedia.org/wiki/%E5%85%A8%E5%9B%BD%E5%9C%B0%E6%96%B9%E5%85%AC%E5%85%B1%E5%9B%A3%E4%BD%93%E3%82%B3%E3%83%BC%E3%83%89 数字で行ってINNER JOINが面倒な場合はプログラムの方に配列をつくって表記してしまう方法もあることですし。
お礼
どうもありがとうございました。 参考になりました。
お礼
どうもありがとうございました。 参考になりました。