【发布时间】:2012-11-22 00:12:02
【问题描述】:
我有一个数据库表 myISAM,用于全文搜索。我还有一个 InnoDB 表。我的 myISAM 表中有一个列,我想与我的 InnoDB 表中的一个列匹配。可以这样做吗?我好像搞不定!
【问题讨论】:
我有一个数据库表 myISAM,用于全文搜索。我还有一个 InnoDB 表。我的 myISAM 表中有一个列,我想与我的 InnoDB 表中的一个列匹配。可以这样做吗?我好像搞不定!
【问题讨论】:
http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html
外键定义需满足以下条件:
两个表必须是 InnoDB 表,并且不能是 TEMPORARY 表。
所以,恐怕你无法实现你想要的。
【讨论】:
我建议您更改您的数据库架构,以便您拥有一组设计用于写入的数据完整性的表(所有 InnoDB),以及另一组设计用于搜索的表 - 可能在不同的盒子上,甚至可能不使用 MySQL,但也许像 Solr 或 Sphinx 这样的搜索服务器,其性能应该优于全文 MySQL 表。然后,您可以定期从您的写入数据库中填充您的搜索数据库。
【讨论】:
TRIGGER 很容易做到这一点。