mysql中like的查询效率
2024-11-04 15:00:44 # 技术笔记

like %索引%和like 索引%的区别

在 MySQL 中,当使用 LIKE 条件进行字符串匹配时,如果在索引列上使用 LIKE %索引%LIKE 索引% 这两种形式,会有不同的查询性能和结果。

  1. LIKE %索引%
    这种情况下,% 通配符位于搜索字符串的开头和结尾,表示可以匹配任意字符。例如,假设索引列是 column_name,我们执行以下查询:

    1
    SELECT * FROM table_name WHERE column_name LIKE '%索引%';

    这将查找 column_name 列中包含有 索引 子字符串的所有行。

  2. LIKE 索引%
    这种情况下,% 通配符仅位于搜索字符串的结尾,表示只匹配以指定字符串开头的值。例如,假设索引列仍然是 column_name,我们执行以下查询:

    1
    SELECT * FROM table_name WHERE column_name LIKE '索引%';

    这将查找 column_name 列中以 索引 开头的所有行。

区别:

  • LIKE %索引% 的查询可能会涉及全表扫描,因为通配符 % 出现在搜索字符串的开头和结尾,导致无法利用索引。
  • LIKE 索引% 的查询可以利用索引,因为通配符 % 仅出现在搜索字符串的结尾,允许数据库引擎使用索引的前缀部分进行匹配,从而提高查询性能。

通常情况下,如果可能,应尽量避免使用 LIKE %索引% 这种形式,特别是对于大型数据表,因为它可能导致较慢的查询性能。如果只需要查找以某个字符串开头的值,应该使用 LIKE 索引% 形式,以便利用索引优化查询。