在数据库查询中,人们面临着选择最佳查询进行搜索的困境基于多列中的特定关键字的行。这个问题比较了两种方法:
此查询使用全文索引来搜索包含关键字“foo”和“bar”的文档指定的列“foo_desc”和“bar_desc”。在 MySQL 5.6 及更高版本中,InnoDB 表支持 MATCH AGAINST。
此查询连接两列中的值并使用 LIKE 执行在结果中搜索“foo”和“bar”的子字符串string.
MATCH AGAINST 在 MyISAM 表上表现出卓越的性能,利用全文索引来高效搜索关键字。相比之下,LIKE 执行全表扫描,在每一行中搜索关键字,这对于大型数据集来说可能非常耗时。
仅当直接应用于列(不是函数结果)、搜索模式与列的开头匹配并且该列已建立索引时,LIKE 才有效。否则,它默认为全表扫描,对于大型数据集来说变得不切实际。
MySQL 中 MATCH AGAINST 的一个限制是它仅匹配整个单词。因此,搜索“bla”不会匹配包含“blah”的列,但搜索“bla*”会找到它。
基于性能考虑和LIKE的局限性,MATCH AGAINST是在大数据集中搜索多列关键词的首选。它利用全文索引的效率来提供快速、准确的结果。
以上是MATCH AGAINST 或 LIKE:MySQL 中的多列关键字搜索哪个更好?的详细内容。更多信息请关注PHP中文网其他相关文章!