首页/数据/数据库速查/IN 与 LIKE:集合匹配与模糊匹配
SQL 语法52 条

IN 与 LIKE:集合匹配与模糊匹配

IN 做集合匹配(命中索引仍可走 range);LIKE 前置通配符 % 会失效索引,全文检索需求应上 FULLTEXT 或外部搜索。

数据库速查数据更新于 2026-10-12
用途集合与模糊匹配
IN等值集合,N 不宜过大
LIKE前缀匹配 'abc%' 可用索引

用法示例

用法示例
SELECT * FROM users WHERE id IN (1,2,3);
SELECT * FROM orders WHERE order_no LIKE 'ORD2026%';
SELECT * FROM products WHERE name LIKE '%phone%';   -- 无法用索引

大集合替代方案

大集合替代方案
-- 上千个 id 时临时表/JOIN 更稳
CREATE TEMPORARY TABLE tmp_ids (id BIGINT PRIMARY KEY);
INSERT INTO tmp_ids VALUES (1),(2),(3);
SELECT u.* FROM users u JOIN tmp_ids t USING(id);
LIKE '%x%' 与 NOT LIKE 都是全表扫描;正则、多关键词搜索建议上 FULLTEXT 索引或外部检索引擎。

易错点

  • IN 列表过大会撑爆解析与内存,几百个以上改临时表
  • LIKE 的转义字符 _ 与 % 需要使用 ESCAPE 子句才能匹配字面量

数据来源与参考

  • MySQL 8.0 Reference Manual: Pattern Matching

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌