我对需要解决的数据提出了轻微挑战。我有一个表格,其中电子邮件的纯文本存储在longtext列中。在我开始在框架中开发之前就是这样的。已经存在超过一百万行,其中存储有大量电子邮件。
我需要能够在该字段中搜索文本,但在返回任何结果之前需要很长时间。这并不理想,因为有数百名用户使用该系统,他们需要能够搜索电子邮件内容。
我尝试过以下简单的SQL语句,但查找记录需要很长时间:
select id from emails where description like "%hello world%";
根据MySQL文档,全文索引只能用于char,varchar和text字段。
有人能建议一种有效的方法来搜索长篇专栏吗?
或
是否有任何SQL方法/命令可用于在表中运行并将longtext字段的内容拆分为多个文本列以进行全文索引?
答案 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);
是的,你会非常惊讶!