gpt4 book ai didi

mysql - 优化正则表达式查询

转载 作者:行者123 更新时间:2023-11-29 20:14:20 26 4
gpt4 key购买 nike

我有一个正在尝试优化的 MySQL 查询。我有一个包含几十万行的表 t,其中有一个 varchar 列 x(以及其他一些列),该列已建立索引并且具有少于 1000 个不同的值。我试图获取与特定正则表达式匹配的所有不同的 x 。这是表述这一点的直接方法:

SELECT DISTINCT x 
FROM t
WHERE x REGEXP 'someregexp'

但是MySQL在使用REGEXP时似乎完全忽略了索引,所以需要几秒钟的时间。由于我的不同值数量相当少,因此如果查询使用索引获取不同值,然后使用正则表达式过滤结果,那么处理这个问题应该很快,但现在情况似乎并非如此,因为它应该能够在不到一秒的时间内运行。

有什么方法可以提示 MySQL 查询优化器它可以这样做吗?

最佳答案

也许尝试这样的事情:

SELECT d.x
FROM (SELECT DISTINCT x FROM t) d
WHERE d.x REGEXP 'someregexp'

这样,它应该首先执行不同的过滤(对于索引来说速度很快),然后执行正则表达式(如果只需要对几个不同的值执行,则速度很快)。

关于mysql - 优化正则表达式查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39896194/

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