mysql - INDEX 或 FULLTEXT 在 MySql 中存储 VARCHAR(1000)

标签 mysql indexing varchar full-text-indexing

我的目的:
我需要进行 SELECT WHERE string IN ('...') 查询,而 string 是一个 VARCHAR (1000)

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

问题:
搜索将完成,在查询中使用两个相似的表创建多个 UNION,这两个表都包含 string 字段,所以我不知道 FULLTEXT 是否会加快速度。
(我对 FULLTEXT 索引的想法是将它们与 MATCH AGINST 查询一起使用)

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

注意:
这个问题是关于哪种类型的 INDEX 更适合这种情况。我只是把结构问题联系起来,让读者更多地引用我在做什么。它不是重复的。

最佳答案

1-N

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

全文

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

正确搜索

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

关于mysql - INDEX 或 FULLTEXT 在 MySql 中存储 VARCHAR(1000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15178496/

相关文章:

mysql - 索引一个不断变化的字段是否合理,或者不断写入会降低性能吗?

mysql - varchar 作为外键约束

php - sql server 存储过程使用 varchar max 作为参数

php - 手机中的图片方向

java - RPC 调用失败

php - SQL 数据库信息未进入 HTML/PHP 表

indexing - 如何在 GUI 中获取 Hibernate Lucene 索引创建的统计信息?

MySQL查询动态 "Ranking rows"

python - Pandas :更改列数据类型会产生警告

mysql - UTF-8 的 Varchar?