[前][次][番号順一覧][スレッド一覧]

mysql:3702

From: Tybalt of Capulet <Tybalt of Capulet <ice-man@xxxxxxxxxx>>
Date: Tue, 29 May 2001 16:21:38 +0900
Subject: [mysql 03702] インデックスの作成について

神崎です。

現在テーブルのインデックスの作成について悩んでおります。
tbl_1という名前で下記のようなテーブルをcreateするとします。

create table tbl_1 (
id INT(9) NOT NULL,
data1 CHAR(2) NOT NULL,
data2 INT(3) NOT NULL,
data3 CHAR(2) NOT NULL,
data4 CHAR(1) NOT NULL,
data5 CHAR(1) NOT NULL,
primary key (id),
index tbl_1_idx1 (data1,data2,data3,data4,data5),
index tbl_1_idx2 (data2,data3,data4,data5),
index tbl_1_idx3 (data3,data4,data5),
index tbl_1_idx4 (data4,data5),
index tbl_1_idx5 (data5)
)

data1〜data5は検索に使われる項目です。
これらの項目は必ず全て検索に使用されるわけではなく、
任意の組み合わせで検索されます。
この場合「tbl_1_idx1」のインデックスは
(1)data1に対するインデックス
(2)data1とdata2に対するインデックス
(3)data1とdata2とdata3に対するインデックス
(4)data1とdata2とdata3とdata4に対するインデックス
(5)data1とdata2とdata3とdata4とdata5に対するインデックス
となると「MySQL徹底入門」のP57に書いてありました。
ということは例えば、data2とdata3で検索された時とかにはこのインデックスは
使用されないということなのでしょうか?
そうなると上記のcreate文の様に最低5個のインデックスをつけなければ
ならないことになります。
更に上記の5つだけでは到底全てのパターンを網羅できません。
全てのパターンを網羅するためにはこのパターン分だけのインデックスが
必要なのでしょうか?
しかしMySQLのバジョンが3_22のため1テーブルにつきインデックスの最大個数が
16までとも記述されておりました。
わかりにく説明とは思いますが、おわかりの方いらっしゃいましたら
是非ご教授お願いいたします。


_______________________________R_y_u_____
神崎 隆
Mail:ice-man@xxxxxxxxxx
_____K_a_n_z_a_k_i________________________


[前][次][番号順一覧][スレッド一覧]

->    3702 2001-05-29 16:21 [Tybalt of Capulet <i] インデックスの作成について              
      3703 2001-05-29 18:08 ┣[madara <madara@xxxxx]                                       
      3704 2001-05-29 18:35 ┗[Akihiko Shinohara <s]                                       
      3711 2001-05-30 12:35  ┗[Tybalt of Capulet <i]