Mysql 在InnoDB中查找具有类似关键字的项目?
现在,我使用以下构造来查找具有类似关键字的项目: 创建临时表tmp全文索引关键字ENGINE=MyISAM 从对象搜索中选择对象id、关键字; 选择对象id 来自tmp 其中,将关键字与'foo,bar'>1.045匹配; 丢弃临时表tmp; 因此,根据总体记录的数量和关键字字段的平均大小,这可能会在60秒的执行时间内变得非常缓慢。我的目标是在1秒内完成这项任务 除了在文本字段中用逗号分隔的关键字外,我还有一个原子keyord表,表示两列关键字和object_id,直接将一个关键字与一个项关联Mysql 在InnoDB中查找具有类似关键字的项目?,mysql,sql,innodb,similarity,Mysql,Sql,Innodb,Similarity,现在,我使用以下构造来查找具有类似关键字的项目: 创建临时表tmp全文索引关键字ENGINE=MyISAM 从对象搜索中选择对象id、关键字; 选择对象id 来自tmp 其中,将关键字与'foo,bar'>1.045匹配; 丢弃临时表tmp; 因此,根据总体记录的数量和关键字字段的平均大小,这可能会在60秒的执行时间内变得非常缓慢。我的目标是在1秒内完成这项任务 除了在文本字段中用逗号分隔的关键字外,我还有一个原子keyord表,表示两列关键字和object_id,直接将一个关键字与一个项关联
是否有其他方法或平滑的解决方案可以在不使用MyISAM镜像表的情况下实现相同的效果?首先,不要每次都创建表。您可以创建一次,然后使用触发器插入/更新/删除记录,或者每小时定期创建一次,例如,如果不想使用触发器,则截断并插入记录
或者,您可以从MySQL卸载此任务,并使用Lucene/Solr或Sphinx。为什么不在object_search_de?@GordonLinoff上设置全文索引,因为它是一个InnoDB表,InnoDB不支持全文。我刚刚发现并且现在知道InnoDB从5.6版开始支持全文。但是,我不确定更新MySQL环境是否会破坏针对早期版本MySQL构建的其他功能。在较新版本的MySQL中,它是这样做的。