对外部表中的列进行全文索引
我的整个数据库都在 INNDB
中。我喜欢这些功能,毫无疑问。但是它不允许对 TEXT 类型列进行全文索引。因此,我必须从主表 (INNODB
) 中获取当前的 TEXT 列,并创建一个 MYISAM
表并引用回原始表。但由于 MYISAM
不允许 FK
约束,我意识到我造成了一个潜在的弱点。如果原始表索引发生更改,它不会向下级联到 MYISAM
表中。反之亦然,如果我创建从原始表到 MYISAM
表的 FK
链接,并且删除 MYISAM
行,那么我已链接到一个不存在的条目。数据一致性检查根本不存在。
简而言之,INNODB
让我太舒服了,并且为了自己的利益而依赖 FK
约束。
My entire database is in INNDB
. I love the features, hands down. However it doesn't allow full text indexing on TEXT-type columns. So I have to take my current TEXT column from my main table (INNODB
) and create a MYISAM
table and reference back to the original table. But because MYISAM
doesn't allow FK
constraints I realize I've created a potential weakness. If the original table index changes it won't cascade down into the MYISAM
table. Vice versa if I create a FK
link from the original table to the MYISAM
table, and the MYISAM
row is deleted, then I have linked to a nonexistent entry. The data consistency check is simply not there.
In short, INNODB
got me too comfortable and dependent on FK
constraints for my own good.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会考虑根本不使用 MyISAM 全文索引,而是在数据库旁边使用适当的搜索引擎。 Lucene/Solr、sphinx 和 xapian 似乎是主要选择(我自己只使用过 Lucene/Solr)。
有关更多信息,请参阅此问题:)
编辑:也这个问题。
I would consider not using the MyISAM fulltext indexing at all, and instead using a proper search engine alongside your db. Lucene/Solr, sphinx and xapian seem to be the leading choices (I've only used Lucene/Solr myself).
see this question for more :)
edit: also this question.
如果您使用某种框架,该框架可以为您控制引用完整性。 CakePHP 的 Model 类在这方面做得很好。
If you are using some sort of framework, the framework can control the referential integrity for you. CakePHP does a nice job of this with their Model classes.