gpt4 book ai didi

mysql - 性能 LIKE 包括通配符 (%)

转载 作者:可可西里 更新时间:2023-11-01 08:15:07 25 4
gpt4 key购买 nike

如果我执行这个查询:

SELECT * FROM table1 WHERE name LIKE '%girl%'

它返回名称包含“girl”的所有记录。但是,由于 LIKE 语句中的第一个通配符 %,它不能(或不)使用此处所述的索引:Mysql Improve Search Performance with wildcards (%%)

然后我将查询更改为:

SELECT * FROM table1 WHERE name LIKE 'girl%' OR name LIKE '%girl%'

OR 的左侧,我删除了通配符以便它可以使用索引。但性能获胜取决于 MySQL 如何评估查询。

因此我的问题是:当我添加 OR 语句时,我的查询性能会提高吗?

最佳答案

不,性能是一样的。由于 OR,MySQL 仍然必须评估第一个条件 (LIKE '%girl%')。然后它可以使用索引评估第二个条件。您可以在 EXPLAIN 时看到此信息您的查询(mysql 将显示它仍然需要进行全表扫描,这意味着检查每一行):

EXPLAIN SELECT * FROM table1 WHERE name LIKE 'girl%' OR name LIKE '%girl%'

为了更好地处理这些类型的查询,您需要使用 Fulltext indexes以及查询它们的特殊语法。但是 FT 索引表现不同,并不适合所有情况。

关于mysql - 性能 LIKE 包括通配符 (%),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31402380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com