1

我的目的
我需要进行SELECT WHERE string IN ('...')查询,并且stringVARCHAR (1000)

问题:
我不知道我应该为它使用FULLTEXT索引还是只使用一个简单的INDEX

问题:
搜索将UNION在查询中使用两个相似的表进行多次搜索,其中包含两个string字段,所以我不知道FULLTEXT是否会使其更快。
(我对 FULLTEXT 索引的想法是将它们与 MATCH AINST 查询一起使用)

结构:
您可以string在我之前在How to structure this DATABASE idea中提出的问题中看到我如何在不同表中构建多个字段

注意:
这个问题是关于哪种类型的 INDEX 更适合这种情况。我只是将结构化问题联系起来,以便为读者提供更多关于我在做什么的参考。它不是重复的。

4

1 回答 1

3

1-N

如果您的单词和短语很常见并且会在许多行之间重复,您应该考虑将它们分成 1-n 关系。这样,通过将数据与您的数据连接起来,搜索和查询数据会更加高效。这可能不符合您的要求——这完全取决于单词和短语的类型。

全文

索引 varchar 1000 是一个坏主意(我不喜欢做出假设,但这通常总是不好的)。如果您的数据集增长,这不仅会使用大量内存和索引空间,当它开始成为问题时,这将是一个难以解决的性能瓶颈。这就是FULLTEXT存在的原因,如果您使用 MySQL 5.6 或更高版本,您现在也可以在 INNODB 表上使用FULLTEXT - 如果您使用的是旧版本,不幸的是,它只会在 MyISAM 中受支持,并且存储引擎有缺点(一些相当大的缺点,所以请在选择之前研究一下)。

适当的搜索

最好的解决方案是使用适当的搜索引擎,例如LuceneSphinxXapian

于 2013-03-02T20:11:05.527 回答