次のテーブル構造があります
CREATE TABLE `table` (
`id` int(11) NOT NULL auto_increment,
`date_expired` datetime NOT NULL,
`user_id` int(11) NOT NULL,
`foreign_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `date_expired` (`date_expired`,`user_id`,`foreign_id`),
KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
お気づきのとおり、 user_id: date_expired
&に重複したインデックスがありますuser_id
。もちろん、データが一意であることを確認したいので、一意のインデックスが必要です。
インデックスが重複する理由は、インデックスがないuser_id
と、メインの検索クエリに 4 秒かかるためです。追加のインデックスを使用すると、1 秒かかります。クエリは でテーブルを結合しuser_id
、チェックしていdate_expired
ます。
テーブルには 275 レコードしかありません。
- 同じフィールドに一意のインデックスと通常のインデックスを持つことはどれほど悪いことですか?
- テーブルが純粋に ID である場合、データよりも大きなインデックスを持つことはどれほど悪いことでしょうか?