gpt4 book ai didi

mysql - 优化此 mysql 查询以尽可能使用我的索引?

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

我有一个 mysql 查询,我认为它应该使用我的索引,但似乎仍然需要扫描很多行(我认为)。

这是我的查询:

SELECT DISTINCT DAY(broadcast_at) AS 'days' 
from v3211062009
where month(broadcast_at) = 5 and
year(broadcast_at) = 2012
and deviceid = 337 order by days;

在我的 table 上,我在 broadcast_at, deviceid 上设置了一个索引。但是,此查询的解释结果如下所示:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1 SIMPLE v3211062009 ref indx_deviceid,indx_tracking_query indx_tracking_query 4 const **172958** Using where; Using index; Using temporary; Using filesort

我不明白为什么它需要查找这么多行。此 deviceid 记录的总行数仅为 184085 因此我的查询似乎几乎查看所有这些记录只是为了获得结果集。 broadcast_at 上的索引是否不起作用。

我显然在做一些根本性的错误,但无法弄清楚。更改索引中列的顺序无效。

最佳答案

如果您在该字段上使用函数,我认为 MySQL 无法利用 broadcast_at 上的索引。

如果你这样做,它的表现如何:

SELECT DISTINCT DAY(broadcast_at) AS 'days' 
from v3211062009
where broadcast_at >= ('2012-05-01') AND
broadcast_at < ('2012-06-01')
and deviceid = 337 order by days;

关于mysql - 优化此 mysql 查询以尽可能使用我的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10480366/

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