MySQL的索引条件在哪里放慢查询?

时间:2019-03-20 16:56:10

标签: mysql

嗨,我编写了一个MySQL查询,如下所示。

SELECT device_uuid,
     day_epoch,
     hour,
     zone_id,
     is_repeat,
     (day_epoch + (3600*hour)) AS hour_epoch
FROM tracking_daily_stats_zone_unique_device_uuids_per_hour
WHERE day_epoch >= 1552435200
AND day_epoch < 1553040000
AND venue_id = 46
AND zone_id IN (102,105,108,110,111,113,116,117,118,121,287)

我遇到了一个奇怪的问题,使我对MySQL的理解困惑。当我运行上述使用venue_id(索引)的查询时,运行时间大约需要30秒。

当我删除venue_id条件并保持其他所有条件不变时,运行时间将减少到9秒。

这是使用venue_id时的解释,因为您看到它正在查看一个分区,我认为它应该更快。

venue_id explain

以下是未使用venue_id且正在使用所有分区的说明,我以为应该更慢

no venue_id explain

“上面的图像没有显示所有分区,因为如果我显示所有分区,我将无法对其进行截图。”

上图没有显示所有分区,因为如果我显示所有分区,我将无法对其进行屏幕快照。您可能已经计算出表数据已在venue_id上进行分区,其背后的原因这是为了加快查询速度。

这是此表的索引的屏幕截图:

table indexes

0 个答案:

没有答案