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

MySQL: Split longtext column into multiple text columns

我对需要解决的数据有一点挑战。我有一个 table,其中电子邮件的纯文本存储在一个长文本列中。在我开始在框架中开发之前是这样的。已经有超过一百万行存储了大型电子邮件。

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

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

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

谁能推荐一种在长文本列中进行搜索的有效方法?

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

I have tried the following simple SQL statement but it takes too long to find records: select id from emails where description like "%hello world%";

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

According the the MySQL documentation, full-text indexing can only be used in char, varchar and text fields.

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

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

是的,你会惊喜的!