gpt4 book ai didi

MySQL - LIKE 尾随通配符与范围搜索

转载 作者:行者123 更新时间:2023-12-01 00:43:33 25 4
gpt4 key购买 nike

我想找到更好的方法,主要是在我的数据库中的性能问题。通配符 LIKE,还是范围搜索?

让我们有这张表:

| id INT | created DATE | some other columns ... |

如果我想选择某个月创建的条目,我可以考虑两种选择。一个是在一个范围内搜索的一对比较:

SELECT * FROM my_table WHERE created >= '2014-09-01' AND created < '2014-10-1'

第二个是通配符 LIKE:

... WHERE created LIKE '2014-09-%'

我创建了一个包含数百个条目的虚拟表,分为三个月。当我在两种情况下运行选择(禁用缓存和在列上创建索引)时,时间大致相同 - 第一个更快,第二个更快。在旧的 Atom CPU 上,时间在 4.0 到 5.0 毫秒之间。

在我看来,从性能的角度来看,我将使用哪一个并不重要。这是对的吗?还是会出现几千行的差异?

谢谢

最佳答案

通配符前缀几乎使优化器无法使用索引,我猜想执行范围查询(尤其是日期 types)总是比字符串比较更好。

加上几行数据并不能说明问题:数据缓存的差异、其他进程使用的 CPU 将超过 ms 的差异。

编辑:但重申一下,这里的主要内容是将日期与日期进行比较,而不是将日期与字符串进行比较。这会在某个阶段反咬你一口。

例如

where created >= STR_TO_DATE('2014-09-01','%Y-%m-%d') 
and created < STR_TO_DATE('2014-10-01','%Y-%m-%d')

关于MySQL - LIKE 尾随通配符与范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25915991/

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