萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 多字段關鍵詞模糊查詢:CONCAT + LIKE 實戰技巧

核心思路

將多個字段拼接為單一字符串,再使用 LIKE 進行模糊匹配。

關鍵函數:CONCAT()

CONCAT(str1, str2, ...)
-- 示例
CONCAT('abc', 'd', 'ef', 'g')   -- 'abcdefg'
CONCAT('abc', 3, 'ef', 'g')     -- 'abc3efg' (數字隱式轉字符串)

實戰 SQL

SELECT * FROM `magazine` 
WHERE CONCAT(`title`, `tag`, `description`) LIKE '%關鍵字%';

原理:將 title、tag、description 三字段拼接後,一次 LIKE 匹配。

性能分析與優化

缺點

  • 全表掃描:拼接後無法使用索引,必須全表計算 CONCAT 再匹配。
  • 函數開銷:每行調用 CONCAT,CPU 消耗大。

優化方案

  1. 全文索引:ALTER TABLE magazine ADD FULLTEXT idx_ft (title, tag, description); 然後 MATCH(title,tag,description) AGAINST('關鍵字')。
  2. 搜索引擎:Elasticsearch、MeiliSearch 等專業全文搜索服務。
  3. 冗余搜索列:新增 search_text TEXT 列,寫入時觸發器自動拼接三字段,建全文索引或普通索引(前綴)。
  4. 分條件查詢:若業務允許,拆分為 WHERE title LIKE '%kw%' OR tag LIKE '%kw%' OR description LIKE '%kw%',配合各字段前綴索引(LIKE 'kw%' 才能用索引)。

適用場景建議

  • 數據量 < 10 萬、查詢頻率低、臨時需求 → 直接 CONCAT + LIKE 可接受。
  • 數據量大、高頻搜索 → 必須上全文索引或搜索引擎。
copyright © 萬盛學電腦網 all rights reserved