我有一个 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;
在我的桌子上,我在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 上的索引是否不起作用。
我显然在做一些根本错误的事情,但无法弄清楚。更改索引中列的顺序不起作用。