重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

単純な質問ですみません。

idを例えばアルファベット5~10文字程度にしたVARCHAR(10)とする場合と、tinyintにする場合では検索スピードはどちらが速いのでしょうか?
idの種類は多くても10種類くらいです。
レコード数は50万件くらいあります。

アルファベットのidを数値にするとは、例えば
apple → 0
orange → 1
banana → 2
というような感じです。

また、idをもしtinyintにした場合、phpMyAdminなどでレコード表を確認した場合、何のidかわかりにくいですが、これは仕方ないのでしょうか?

A 回答 (1件)

本質的にidというのはレコードを特定するためのものなので


インデックスが利いていれば基本的にスピードの差はほぼでないでしょう

>apple → 0
>orange → 1
>banana → 2

実務上idに意味のある単語などを用いることは危険です。
appleとしたものの実はgreen appleだったりする場合もあるでしょう
idを意味のない数字でもっておけばあとからいくらでも修正が利きます

>phpMyAdminなどでレコード表を確認した場合、何のidかわかりにくいです

リレーションの設定で外部キー制約をつけておけば、所定のコードをクリックして
リンク先へ飛ぶことができますよ
(仮に上記の例であれば0をクリックしたときappleのデータを表示させられる)

ちなみにidに0を利用するのはお勧めできません
1以上の整数を利用してください
(他のプログラムとの組み合わせの際,0は特別な意味を持つケースが多いため、
たとえばfalseだったりnullだったり,空文字だったりする)
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/01/27 14:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

今、見られている記事はコレ!