• ベストアンサー

idとするものをvarcharかintかで速度は?

単純な質問ですみません。 idを例えばアルファベット5~10文字程度にしたVARCHAR(10)とする場合と、tinyintにする場合では検索スピードはどちらが速いのでしょうか? idの種類は多くても10種類くらいです。 レコード数は50万件くらいあります。 アルファベットのidを数値にするとは、例えば apple → 0 orange → 1 banana → 2 というような感じです。 また、idをもしtinyintにした場合、phpMyAdminなどでレコード表を確認した場合、何のidかわかりにくいですが、これは仕方ないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

本質的にidというのはレコードを特定するためのものなので インデックスが利いていれば基本的にスピードの差はほぼでないでしょう >apple → 0 >orange → 1 >banana → 2 実務上idに意味のある単語などを用いることは危険です。 appleとしたものの実はgreen appleだったりする場合もあるでしょう idを意味のない数字でもっておけばあとからいくらでも修正が利きます >phpMyAdminなどでレコード表を確認した場合、何のidかわかりにくいです リレーションの設定で外部キー制約をつけておけば、所定のコードをクリックして リンク先へ飛ぶことができますよ (仮に上記の例であれば0をクリックしたときappleのデータを表示させられる) ちなみにidに0を利用するのはお勧めできません 1以上の整数を利用してください (他のプログラムとの組み合わせの際,0は特別な意味を持つケースが多いため、 たとえばfalseだったりnullだったり,空文字だったりする)

suffre
質問者

お礼

ありがとうございます! 詳しくご説明くださって感謝します。 速度的にはそれほど問題ないのですね。 今回はIDを数値にすることにしました。 IDから先は特に情報はいらないので外部キー制約などは付けれませんが自分で管理したいと思います。

関連するQ&A