SQL用了 like 来查询会走索引吗?

LIKE 子句在某些情况下会使用索引,但这取决于你如何使用它。以下是一些具体的规则:

  1. 如果 LIKE 子句以通配符 % 开始,例如 LIKE '%abc',那么 MySQL 就不会使用索引,而是进行全表扫描。因为MySQL无法确定搜索的起始位置。

  2. 如果 LIKE 子句不以通配符 % 开头,例如 LIKE 'abc%',则 MySQL 可以使用索引。这是因为在这种情况下,MySQL可以从索引的开始部分进行扫描。

  3. 如果 LIKE 子句的通配符 % 在中间,例如 LIKE 'a%bc',则MySQL在匹配到第一个通配符之前的部分(在这里是 ‘a’)可以使用索引。

所以的确有可能使用 LIKE 进行索引查询,但这完全取决于你如何使用它。如果可能,避免以 % 开头的查询模式能帮助提高查询的效率。

例如, 你在运行一个电商网站, 并有一个商品数据库. 这个数据库有一个”商品名称”列, 并且在这个列上有一个索引。如果用户在你的网站上搜索以特定词开始的商品(比如 “电脑”),你可能会对 “商品名称” 列运行一个查询如 LIKE '电脑%',这种情况下,数据库将会使用索引进行查询优化。

发表评论

后才能评论