MySQL - 查询不可索引的字段

时间:2017-08-08 17:14:15

标签: mysql

相关网页为https://www.christart.com/poetry/

我有一个MySQL表,其中有超过7,000条诗歌记录。我收到了来自我的用户的请求,以便能够对他们的诗歌进行查询。但它们保存在“文本”列中。

我知道如何编写SQL语句。这很容易。我担心的是数据库的负载。我总是索引查询或加入的列。但无法索引“文本”列。

一定有办法。我该怎么做呢?

3 个答案:

答案 0 :(得分:3)

您可以使用full text index

CREATE FULLTEXT INDEX poem_contents ON poems(body);

然后使用match进行搜索:

SELECT *
FROM   poems
WHERE  MATCH(body) AGAINST ('some phrase' IN BOOLEAN MODE)

答案 1 :(得分:1)

没有理由不能索引文本字段。话虽这么说,索引一个包含整首诗的文本字段可能没什么价值。

如果您的数据库只有7,000行,那么除非您的扩展规模比目前大得多,否则您可能不会看到巨大的性能损失。对于更大的规模,更好的解决方案可能是从正文中提取关键字并搜索这些关键字。

答案 2 :(得分:0)

我认为你必须探索Apache Lucene或提供全文搜索的类似项目。或者你可以检查mongodb而不是mysql。它有多种索引类型。还有Solr / ElasticSearch,后面使用Lucene。

诗体,我假设,它将以varchar类型存储。我不知道varchar上可能的索引编程是不是&不要认为对整个诗体进行索引是明智的。像Lucene / Solr这样的东西提供了更好的选择。

请注意,我与上述任何产品无关。

相关问题