在数据库中搜索包含分散在多列中的特定关键字的行时,会出现两个主要选项:MATCH AGAINST 和 LIKE 。每种方法都有其优点和缺点,如下所述。
MATCH AGAINST
MATCH AGAINST 在适当的列上利用全文索引,在表上拥有卓越的性能MyISAM 存储引擎。这允许对指定列中的多个关键字进行高效匹配。
LIKE
虽然比 MATCH AGAINST 更通用,但 LIKE 搜索需要通过串联和单独评估每一行比较。这种方法会导致显着的性能损失,特别是对于大型表。此外,LIKE 可能会遇到部分关键字匹配的问题,例如 MATCH AGAINST 时“xxfoo”不匹配。
首选
对于 MyISAM 表, MATCH AGAINST 是涉及跨多个关键字的全文搜索的首选
对于 InnoDB 表,MySQL 5.6 及更高版本提供了对 Match Against 的支持,使其成为一个可行的选项。
考虑使用第三方搜索Engine
如果性能是一个关键因素,而底层数据库系统没有提供令人满意的解决方案,可以考虑集成一个专为全文索引和搜索而设计的第三方搜索引擎。
以上是MATCH AGAINST 或 LIKE:哪个查询优化我的全文搜索?的详细内容。更多信息请关注PHP中文网其他相关文章!