我有以下表结构
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 时,索引比数据大有多糟糕?