在資料庫查詢中,人們面臨著選擇最佳查詢執行搜尋的困境是基於多列中的特定關鍵字的行。這個問題比較了兩種方法:
此查詢使用全文索引來搜尋包含關鍵字「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中文網其他相關文章!