効率的なインデックスのつけ方は?
効率的なインデックスのつけ方は?
MYSQLでのインデックスのつけ方をご教授して頂けますでしょうか?
・データ数とかその他もろもろにもよるかと思いますが、一般的に考えてってことでよろしくお願いいたします。
以下のようなテーブル定義があったとします。
CREATE TABLE TEST_TBL (
C1 VARCHAR(10) NOT NULL,
C2 VARCHAR(10) NOT NULL,
C3 VARCHAR(10) NOT NULL,
C4 VARCHAR(10) NOT NULL,
PRIMARY KEY (C1)
)
検索条件としては、
・(C1)
・(C2)
・(C3)
・(C4)
・(C1,C2)
・(C1,C3)
・(C1,C4)
・(C2,C3)
・(C2,C4)
・(C3,C4)
・(C1,C2,C3)
・(C1,C2,C4)
・(C1,C3,C4)
・(C2,C3,C4)
・(C1,C2,C3,C4)
と言うような、すべての場合の条件があるとします。
それぞれの検索条件の頻度は同程度とします。
この場合、どのINDEXとどのINDEXを作成するがベターなのでしょうか?
1. CREATE INDEX TEST_IDX1 ON TEST_TBL (C1);
2. CREATE INDEX TEST_IDX1 ON TEST_TBL (C2);
3. CREATE INDEX TEST_IDX1 ON TEST_TBL (C3);
4. CREATE INDEX TEST_IDX1 ON TEST_TBL (C4);
5. CREATE INDEX TEST_IDX1 ON TEST_TBL (C1,C2);
6. CREATE INDEX TEST_IDX1 ON TEST_TBL (C1,C3);
7. CREATE INDEX TEST_IDX1 ON TEST_TBL (C1,C4);
8. CREATE INDEX TEST_IDX1 ON TEST_TBL (C2,C3);
9. CREATE INDEX TEST_IDX1 ON TEST_TBL (C2,C4);
10.CREATE INDEX TEST_IDX1 ON TEST_TBL (C3,C4);
11.CREATE INDEX TEST_IDX1 ON TEST_TBL (C1,C2,C3);
12.CREATE INDEX TEST_IDX1 ON TEST_TBL (C1,C2,C4);
13.CREATE INDEX TEST_IDX1 ON TEST_TBL (C1,C3,C4);
14.CREATE INDEX TEST_IDX1 ON TEST_TBL (C2,C3,C4);
15.CREATE INDEX TEST_IDX1 ON TEST_TBL (C1,C2,C3,C4);
お礼
taka451213 様 早速回答頂きまして,ありがとうございます。 わかりやすい回答でよく理解できました。