我需要为两个不同表中的两个不同列做全文索引。在innodb中使用myisam slave/ghost表进行全文搜索
唯一的问题是我使用innodb,并且我没有办法做全文索引。
我知道有一些选项,例如狮身人面像和我看看选项,但我觉得这是一个矫枉过正,因为colums是全文索引是varchar(20)。
而且,很可能会出现只有约1,000,000行“最多”
一个简单的选项,我在想是只有主键和使用的MyISAM索引的VARCHAR复制的两个表。
什么建议吗?有什么办法可以轻松实现吗?
我需要为两个不同表中的两个不同列做全文索引。在innodb中使用myisam slave/ghost表进行全文搜索
唯一的问题是我使用innodb,并且我没有办法做全文索引。
我知道有一些选项,例如狮身人面像和我看看选项,但我觉得这是一个矫枉过正,因为colums是全文索引是varchar(20)。
而且,很可能会出现只有约1,000,000行“最多”
一个简单的选项,我在想是只有主键和使用的MyISAM索引的VARCHAR复制的两个表。
什么建议吗?有什么办法可以轻松实现吗?
我决定去用一个简单的解决方案:
首先,插入该行的InnoDB表(主)。然后,在它之后,将该行插入myisam表(不是触发器)。
每隔一小时左右运行一次cron以确保参照完整性。
查询将是这样的:
SELECT *
FROM master
WHERE master.ID NOT IN
(SELECT slave.ID FROM slave WHERE master.ID=slave.ID);
SELECT *
FROM slave
WHERE slave.ID NOT IN
(SELECT master.ID FROM master WHERE slave.ID=master.ID);
如果从行指主行不存在,删除。
如果从行不用于主行存在,请插入。
这不是最好的解决方案,但很简单。
非规范化,将文本数据放入MyISAM表并将其链接到InnoDB表(虽然MyISAM不会强制执行参照完整性)... –
好的第一个问题,好奇的答案,这带来并欢迎使用stackoverflow。 – stefgosselin
嘿谢谢。虽然反规范化似乎很简单,有一两件事我很担心的是,就像OMG注意参照完整性:没有交易或F键,以确保存储在MyISAM表行是理智的,以防止指的是不存在的行搜索结果或相反亦然。 – jjj