索引键是不是足够或者我应该添加外键

Posted

技术标签:

【中文标题】索引键是不是足够或者我应该添加外键【英文标题】:Is index key enough or should I add foreign key索引键是否足够或者我应该添加外键 【发布时间】:2015-01-13 10:50:30 【问题描述】:

我不确定是否应该在我的表中添加外键,因为目前我只在 INNER JOINS 上使用索引键。

例如:我有 4 张桌子。

广告>主键ad_id

用户>主键user_id

状态>主键state_id

城市>主键city_id

在我的广告桌上。

每个广告都有一个 seller_id 和一个 buyer_id,这些行内部连接到用户表行 user_id 上的用户表,这是一个主要的键入该表。

每个广告还有一个 state_idcity_id,它们内部连接到作为主键的城市/州表。

目前我只将 Ad 表中的那些字段设置为索引键,然后这些索引键内部连接到另一个表中的主键。我还应该将广告表中的那些索引键设置为外键吗?

谢谢

【问题讨论】:

【参考方案1】:

外键会让人想到一对多的关系。这不是你在这里所拥有的。

您应该为参与 WHERE 子句的列添加索引,并超出主键上的 JOIN。

【讨论】:

谢谢,所以我应该在用于 INNER JOINS 和 WHERE 查询的列上使用索引键? 我假设您的 JOINS 已经违反了主键。你不需要对它们做任何其他事情。 WHERE 子句中的非键列应该添加索引。

以上是关于索引键是不是足够或者我应该添加外键的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 错误 1822:添加外键约束失败;缺少约束索引但索引存在

Mysql创建索引而不是外键约束

主索引列上的 MySQL 表外键索引

如果我的外键已经是唯一约束的一部分,我应该索引它们吗?

postgres 外键是不是意味着索引?

我需要在 Oracle 的外键上创建索引吗?