電子書籍の厳選無料作品が豊富!

全てのカラムを対象にソートや絞り込みをする、また、テーブルを分割する必要がない場合、
全てのカラムにインデックスをつけるしかないと考えていましたが、

http://www28.atwiki.jp/lucier/pages/55.html
「MySQLでは1000件以下のデータの場合はインデックスを作成しないほうが
速い」

1000フィールドならカラムの数に関係なくインデックス不要で
カラムの数が10の場合と、
カラムの数が50の場合
それぞれ負荷はかわらないということでしょうか。

A 回答 (6件)

 検索のためのインデックスのことでしたら、たくさんの解答が付いているとおりです。



 ただ、No1さんの解答へのお礼の後半ですが、基本的にはその認識で合ってます。
 というのは、主キー(primary key)に関しては、検索のためのインデックス「にも」使用されますが、主用途は違います。
 テーブルの整合性の要となるフィールドです。 主キー指定が行われたフィールドに対しては、強制的に、not nullとuniqueが指定されている物とみなされ、その実装手段としてインデックスもつきます。
 外部参照のためのreference keyで使える唯一のフィールドともなります。

 本来のリレーショナルデータベースの理論によれば、テーブルには主キーが必ず定義されていなくてはならないものです。これは、レコードの一意性を保証するための制約です。
 複数フィールドを合わせて主キーとすることもありますし、下手をするとテーブルの全フィールドを併せて主キーとすることまであります。

 主キーに関しては、検索の効率はあくまでおまけ。他の仕事の方がよほど重要なんだと思っておいてください。(現に、複数フィールドで主キーを構築すると、インデックスとしての使い勝手は落ちます。そのため、主キーを構成する一つのフィールドに手動でインデックスを構成することも珍しい話ではありません。)
    • good
    • 0
この回答へのお礼

良く分かりました。ありがあとうございました。

お礼日時:2012/06/24 13:35

カラム・フィールド・レコードの意味を間違っています。


EXCELで言う「カラム(列)」=「フィールド」です。
    • good
    • 0
この回答へのお礼

列:フィールド、カラム
行:レコード
ですね。ありがとうございます。

お礼日時:2012/06/24 13:36

参照先の「MySQLでは1000件以下のデータの場合はインデックスを作成しないほうが


速い」の「1000件」とは、レコード数のことです。
つまり1000レコード以下のテーブルなら、わざわざ検索フィールドにインデックスを付けるような対策をしなくても早く検索できる、ということのようです。
    • good
    • 0
この回答へのお礼

エクセルでいう
列を「カラム」
行を「フィールド」または「レコード」
セルに入っている値を「データ」
だと認識していますが、あっていますよね?

お礼日時:2012/06/16 19:29

EXPLAINでテストして早いほうをつかう

    • good
    • 0
この回答へのお礼

調べてみます。

お礼日時:2012/06/16 19:30

>MySQLでは1000件以下のデータの場合は


>インデックスを作成しないほうが速い」
インデックスを設定するとインデックス分の容量が増加し、更新スピードがインデックスを登録する分遅くなります、インデックスは検索が遅くなって支障をきたすようになった時点で作成する事を推奨します。
>カラムの数が10の場合と、カラムの数が50の場合
>それぞれ負荷はかわらないということでしょうか。
カラム数が増えればレコードの容量が増えるので負荷は上がります、どちらにしても許容できる検索スピードであればインデックスを作らなくても良いです。
    • good
    • 0
この回答へのお礼

レコードがいくら1000行以内でもカラムが多ければ多いほど、そういえないといことなのですね。インデックスも極力さけるべき。よくわかりました。ありがとうございます。

お礼日時:2012/06/16 19:32

根拠が不明ですね。


現在のバージョンではデフォルトのストレージエンジンはInnoDBになっており、これは主キーを定義しなくても暗黙の主キーを定義してしまいます。
主キーが特定できるなら、定義したほうがいいと思います。
セカンダリインデックスは索引の選択性の問題です。索引で検索しても全体の20%を超えるようならインデックスは張ってもあまり意味はなく、更新の負荷が大きくなるだけです。
    • good
    • 0
この回答へのお礼

>全体の20%を超えるようならインデックスは張ってもあまり意味はなく、
>更新の負荷が大きくなるだけ

1000フィールドを超えるならインデックスキーが必要になります。
カラムが50個あった場合、10個(50×20%)まではインデックスを張るのは意味がありますが、それを超える分は効果がないばかりか負荷が大きくなります。

1000フィールド以内であればインデックスキーは全てのカラムで不要です。
ただし、主キーだけは必ず設定したほうがいい。

ということでしょうか?

お礼日時:2012/06/16 10:04

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