【发布时间】:2009-11-27 16:27:33
【问题描述】:
我最近将我的整个数据库从 myisam 迁移到了 innodb。我对这一切都很陌生,所以我对外键的使用有疑问。
假设我有两个表:用户、消息。
用户
id (pr_key)name
消息
id (pr_key)user_idmessage
id 字段都是自动递增的。
所以现在在我的查询中,我已经加入了这两个表。是否还需要在这里放置一个外键,我实际上没有看到一点。它是否具有性能优势。
如果我选择在此处放置外键,我假设我必须将消息的 pr_key 设置为 id 和 user_id。
添加其他 prim_key 不仅会占用更多空间,还会导致性能下降。
现在,如果表有两个 pr_key,而我只查询其中一个,我是否仍能获得相同的性能优势。还是我需要明确使用这两个键。
我知道在这个例子中我将在 user_id 上搜索,所以无论如何索引它可能是明智的。但是,如果该字段是没有搜索的字段怎么办。在这个字段上放置多个主键是否仍然很好,只是为了外来关系。
谢谢!
【问题讨论】:
标签: performance foreign-keys primary-key innodb