首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有两列的MySQL索引,其中一列是外键

问具有两列的MySQL索引,其中一列是外键
EN

Stack Overflow用户
提问于 2011-01-05 16:48:13
回答 4查看 290关注 0票数 1

我有表T1,其中列A是主键,列B是外键,外键是表T2中的主键。我想在T1中创建一个索引,一个复合索引,如(B,A)。但是MySQL只允许我将索引创建为(A,B)。是因为B列是外键吗??请解释一下

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-19 19:07:43

这对我来说很好:

代码语言:javascript
复制
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b INT NOT NULL REFERENCES t2(id)) ENGINE=InnoDB;
CREATE INDEX ix_t1_b_a ON t1 (b, a);

尽管InnoDB确实将聚集键作为行指针包含在索引中,但没有任何东西阻止显式添加该字段,有时需要使用它来优化某些查询。

请检查您的语法。

票数 2
EN

Stack Overflow用户

发布于 2011-01-05 16:55:08

我认为这是没有意义的。您正在尝试使用已经是唯一的列(主键是唯一的)来构建复合索引。

票数 0
EN

Stack Overflow用户

发布于 2011-01-05 16:58:10

由于您使用InnoDB作为存储引擎,因此仅列B上的索引将包含列A(主键)

http://www.mysqlperformanceblog.com/2006/10/03/mysql-optimizer-and-innodb-primary-key/

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

https://stackoverflow.com/questions/4602198

复制
相关文章

相似问题

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