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);
是的,你会惊喜的!
我对需要解决的数据有一点挑战。我有一个 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);
是的,你会惊喜的!