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

INDEXが着いていないカラムをSELECTで検索しても他のカラムにプライマリーキーがあれば、検索は高速になるのでしょか?

テーブル
ID、NAME

IDにプライマリーキーが付いていて、NAMEのカラムのみを検索するときにも高速になるのでしょうか?

A 回答 (2件)

なりません。



IDで検索する場合のみ高速になります。プライマリーキーの他にセカンダリキーもあります。つまりこれらはINDEXにキーを登録するためのもになります。逆にINDEXに登録されていない物はINDEXでは探せないので直接データファイルを検索することになるので時間がかかると言う事です。

昔直接に2分割方で3万件近くのデータのINDEXを作成し、検索をかけた場合で4回前後のデータアクセスで目的のレコードを取得することが出来ました。2分割法ではINDEX部が順番通りに整理されていないとだめなのでINDEXの作り直しの際にとんでもない時間がかかりますのでお勧めはできません。

MySQLだと別の仕組みでINDEXを作っています。ですが考え方は同じです。INDEXに登録されていなければ検索には時間がかかると言う事です。
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます

phpmyadminからインデックスをクリックしておくと、そのカラムには、これから追加されるレコードにも自動的にindexが付くのでしょうか?

何回かクリックするとname_2 name_3とindexが重複して?増えていっているようなんですが削除したほうがいいでしょうか?

お礼日時:2013/06/21 01:16

>プライマリーキーがあれば、検索は高速になるのでしょか?



プライマリキーはそのレコードを特定するためのカラムなので
他のカラムと連動してインデックスを貼るのは向いていません
ユーザー管理テーブルをユーザーID,ユーザー名をとるのであれば
ユーザーIDにはプライマリではなくユニーク属性をつけて、
ユーザーIDとユーザー名を合わせたインデックスを貼るほうが効果的です

また参照だけで集計がないような更新頻度の少ないテーブルであれば、
トランザクションの必要がないので、データエンジンをMyISAMなどにして
高速化をはかるなど工夫できます
    • good
    • 0
この回答へのお礼

回答ありがとうございました
もう少し調べてみます

お礼日時:2013/06/29 21:25

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

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