这是我的表:
CREATE TABLE `letters` (
`a` bigint(20) unsigned NOT NULL,
`b` bigint(20) unsigned NOT NULL,
`c` bigint(20) unsigned NOT NULL,
`d` bigint(20) unsigned NOT NULL,
`e` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$
我的问题:我应该添加哪些索引来加快上述格式的查询速度? (另外,如果可能的话,请尝试描述'为什么'它/它们应该添加,以便我可以从你的答案中学习。)
谢谢!
- 额外信息:插入将定期发生(每秒一些/少数),但选择查询将更频繁地发生。
答案 0 :(得分:1)
由于任何列都可以出现在WHERE子句中,您需要为每个列添加一个索引,但字段 a 除外,因为它已经是PRIMARY KEY,因此已经编入索引
UPDATE :至于后续讨论,Poodlehat指出 e 列具有较低的索引选择性,即“不同值的比率”索引列/列到表中的记录数“。因此,目前尚不清楚在列 e 上添加索引是否有助于或减慢查询速度。因此,卢卡斯将尝试实验并希望将结果分享给我们。
答案 1 :(得分:0)
我认为你需要在a
上有一个唯一索引(或者它应该是主键),绝对是b,c,d
上的索引(在每个上)。不需要e
上的索引(它不会被使用,因为你说它只有15个不同的值)