gpt4 book ai didi

mysql - 为什么在 where 子句中带有 'LIKE word%word2' 的 mysql SELECT 不使用索引

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

查询很大,在 WHERE 子句中包含一长串“LIKE”测试,例如 ...SELECT colA FROM t WHERE (colX LIKE 'word1%word2%' OR colX LIKE 'word3%word4%'或者...);

colX 有一个索引。 mysql 使用索引,因为比较不以“%”开头。通过检查 EXPLAIN,我看到当 SQL 字符串变大时,mysql 停止使用索引并开始进行全表扫描。这似乎与 where 子句中“LIKE”测试的数量有关。在达到阈值时,我可以再添加一个“LIKE”,它会停止使用索引,并且比没有额外的“LIKE”花费的时间长 10 倍。

是否有一些 mysql 变量可以控制这样的行为?

最佳答案

我相信如果你添加FORCE INDEX [index_name],它会在任何情况下使用索引。另外,检查 Hint index documentation . sysvar_max_seeks_for_key 的值也会影响索引是否被使用。也许将此值更改为较小的数字会有所帮助。

关于mysql - 为什么在 where 子句中带有 'LIKE word%word2' 的 mysql SELECT 不使用索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4351186/

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