我有一个示例mysql数据库,只有一个表(innodb)包含以下列
id int主键
描述文本
表有超过3000万条记录,描述字段的长度可达1000个字符。
搜索此表中的某些记录最有效的方法是什么?例如,我需要以/contains开头的描述。
当我运行这样的查询时
SELECT * FROM tbl WHERE Description like '%abc'
这花费了太长的时间,因为like操作符扫描了我在google上搜索的所有表记录,发现有一个叫做全文索引的东西
我使用以下命令添加索引
ALTER TABLE tbl ADD FULLTEXT INDEX `DescriptionIndex` (`Description` ASC)
当我试图执行这样的查询时
SELECT * FROM tbl WHERE MATCH (`Description`) AGAINST ('"The sea is awesome"')
有时它需要很长时间,而其他时间工作良好的基础上,对参数的值,我不能确定问题
我需要知道我是否遗漏了什么或者有更好的方法来实现搜索。
暂无答案!
目前还没有任何答案,快来回答吧!