首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果索引字段也是外键,是否应该使用多个索引方法?

如果索引字段也是外键,是否应该使用多个索引方法?
EN

Stack Overflow用户
提问于 2017-01-16 20:20:21
回答 1查看 30关注 0票数 1

在添加外键后,mysql强制用多重索引方法对以前索引的键进行索引。我用InnoDB。

这是我桌子的结构:

idcompany_idstudent_id .

company_idstudent_id的索引使用:

代码语言:javascript
复制
ALTER TABLE `table` ADD INDEX `multiple_index` (`company_id`,`student_id`)

为什么我使用多个索引列?因为,我的查询最多的时间是:

代码语言:javascript
复制
SELECT * FROM `table` WHERE company_id = 1 AND student_id = 3

有时,我只需通过student_id获取列:

代码语言:javascript
复制
SELECT * FROM `table` WHERE student_id = 3

在为company_idstudent_id添加外键之后,mysql分别对它们进行了索引。所以,现在我有了多个单独的索引字段。

我的问题是,我是否应该删除多个索引键?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-16 21:06:47

那得看情况。如果同一个学生属于许多公司,不,不要放弃。当查询company_id = 1 AND student_id = 3时,优化器必须选择一个索引,然后,它必须检查多个学生或多家公司。

不过,我的直觉告诉我,情况不会是这样的;学生不会与10多家公司有关联,所以稍微浏览一下指数不会有什么大不了的。也就是说,这比在两列上都有索引要脆弱得多。在这种情况下,优化器知道应该做什么,这里。当它有两个索引可供选择时,它可能不会,将来也可能不会,所以您应该使用FORCE INDEX来确保它使用student_id索引。

要考虑的另一件事是如何使用这个表。如果很少给它写信,但经常阅读,那么除了空间之外,额外索引也不会有太多的损失。

TL;DR:索引不是多余的。你是否应该保留它是很复杂的。

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

https://stackoverflow.com/questions/41684376

复制
相关文章

相似问题

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