这可能是一个过于笼统或主观的问题,但我需要帮助,而且我甚至不确定正确和简明的问题是什么。过去几天我做了很多谷歌搜索试图理解这个问题,但我比以前更加困惑,不知道该采取什么方法。
在MySQL中,我已经为产品目录建立了一个数据库。我必须跟踪一些多对多关系,例如产品-标签、产品-类别,所以我决定在这些表中需要使用INNODB,以便我可以利用FOREIGN KEY约束。这都很好,BUT。INNODB不支持FULLTEXT。我读到说在WHERE子句中使用LIKE'%WORD%'会影响性能,因为当通配符前置搜索词时,无法使用索引。数据库在某些时候可能会有很多条目,我不想花费太长时间来搜索。
那么如何两全其美呢?我需要选择其中之一:FULLTEXT还是FOREIGN KEY?我应该制作一种摘要MYISAM表,只包含最相关的搜索列,并在INNODB表上使用触发器来保持更新吗?这难道不会至少部分破坏使用FOREIGN KEY约束的奖励吗:消除重复和多余数据?使用INNODB与MYISAM相比,使大型数据库搜索的最佳性能模式是什么?
如果有经验且聪明的人至少能指点我正确的方向,我将不胜感激。提前致谢。
在MySQL中,我已经为产品目录建立了一个数据库。我必须跟踪一些多对多关系,例如产品-标签、产品-类别,所以我决定在这些表中需要使用INNODB,以便我可以利用FOREIGN KEY约束。这都很好,BUT。INNODB不支持FULLTEXT。我读到说在WHERE子句中使用LIKE'%WORD%'会影响性能,因为当通配符前置搜索词时,无法使用索引。数据库在某些时候可能会有很多条目,我不想花费太长时间来搜索。
那么如何两全其美呢?我需要选择其中之一:FULLTEXT还是FOREIGN KEY?我应该制作一种摘要MYISAM表,只包含最相关的搜索列,并在INNODB表上使用触发器来保持更新吗?这难道不会至少部分破坏使用FOREIGN KEY约束的奖励吗:消除重复和多余数据?使用INNODB与MYISAM相比,使大型数据库搜索的最佳性能模式是什么?
如果有经验且聪明的人至少能指点我正确的方向,我将不胜感激。提前致谢。
FULLTEXT
。 - eggyal