MySQL:将longtext列拆分为多个文本列

时间:2016-07-28 07:26:48

标签: mysql full-text-search longtext fulltext-index

我对需要解决的数据提出了轻微挑战。我有一个表格,其中电子邮件的纯文本存储在longtext列中。在我开始在框架中开发之前就是这样的。已经存在超过一百万行,其中存储有大量电子邮件。

我需要能够在该字段中搜索文本,但在返回任何结果之前需要很长时间。这并不理想,因为有数百名用户使用该系统,他们需要能够搜索电子邮件内容。

我尝试过以下简单的SQL语句,但查找记录需要很长时间:
select id from emails where description like "%hello world%";

根据MySQL文档,全文索引只能用于char,varchar和text字段。

有人能建议一种有效的方法来搜索长篇专栏吗?

是否有任何SQL方法/命令可用于在表中运行并将longtext字段的内容拆分为多个文本列以进行全文索引?

1 个答案:

答案 0 :(得分:1)

  

我尝试过以下简单的SQL语句,但这需要很长时间   查找记录:从电子邮件中选择ID,其中描述如"%hello   世界%&#34 ;;

不幸的是,即使在varchar字段上,mysql也无法使用%something%查询的索引。事实上,它不能使用“'%”的索引。查询。仅当通配符出现在字符串末尾时才能使用索引。

  

根据MySQL文档,全文索引只能是   用于char,varchar和文本字段。

我希望文档在这里更清楚,这是关于TEXT系列字段。这意味着您实际上可以在LONGTEXT和MEDIUMTEXT类型的字段上创建索引。试试这个:

CREATE TABLE ltxt(bada LONGTEXT);
ALTER TABLE ltxt ADD FULLTEXT INDEX ftxt2(bada);

是的,你会非常惊讶!