首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引多于列的MySQL表

索引多于列的MySQL表
EN

Stack Overflow用户
提问于 2015-05-12 22:28:09
回答 1查看 82关注 0票数 2

我正在使用一个来自InnoDB工作台的MySQL数据库,并且被困在一个表的索引上。

我有张桌子

代码语言:javascript
复制
╔═══════════════╗
║  poll_votes   ║
╟───────────────╢
║pk poll_id   fk║ //references polls.id
║pk voter_id  fk║ //references users.id
║   option_id fk║ //references poll_options.id
╚═══════════════╝

由于主键是复合键,MySQL自动为poll_id和voter_id生成多列索引。因为每个外键必须有一个相关联的索引,所以MySQL进一步生成与3列对应的3个附加索引。

现在,我在一个3列表上有4个索引,MySQL工作台不允许我删除其中的任何一个,尽管其中一个是多余的。此外,我不需要option_id索引,所以这只是在浪费空间。

在这里,拥有比列更多的索引会伤害我,还是我不应该担心它?这张桌子有更好的设计方法吗?

编辑: SQL (我编辑了一些字段名,所以这里可能有一个错误):

代码语言:javascript
复制
CREATE TABLE `poll_votes` (
`poll_id` int(11) NOT NULL,
`voter_id` int(11) NOT NULL,
`poll_option_id` int(11) NOT NULL,
PRIMARY KEY (`poll_id`,`voter_id`),
KEY `fk_poll_votes_polls1_idx` (`poll_id`),
KEY `fk_poll_votes_poll_votes1_idx` (`poll_option_id`),
KEY `fk_poll_votes_users1_idx` (`voter_id`),
CONSTRAINT `fk_poll_votes_polls1` FOREIGN KEY (`poll_id`) REFERENCES `polls` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT `fk_poll_votes_poll_options1` FOREIGN KEY (`poll_option_id`) REFERENCES `poll_options` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT `fk_poll_votes_users1` FOREIGN KEY (`voter_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
)
EN

回答 1

Stack Overflow用户

发布于 2015-05-13 01:28:12

代码语言:javascript
复制
SET foreign_key_checks = OFF;
CREATE...
SET foreign_key_checks = ON;

(不,我不明白为什么那个标志会控制你遇到的问题。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30202519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档