我的查询确实很慢,尽管它具有索引

时间:2019-08-29 12:22:08

标签: mysql sql query-optimization

我们必须检查700万行以进行统计分析。运行查询大约需要30秒钟,而使用索引并不能改善查询。

索引根本没有改变速度。

我尝试在where字段,where字段+分组依据和where字段+和上添加索引。

服务器类型为MYSQL,服务器版本为5.5.31。

SELECT
    NOW(), `banner_campagne`.name, `banner_view`.banner_uid, SUM(`banner_view`.fetched) AS fetched,
    SUM(`banner_view`.loaded) AS loaded,
    SUM(`banner_view`.seen) AS seen
FROM `banner_view` INNER JOIN
     `banner_campagne`
     ON `banner_campagne`.uid = `banner_view`.banner_uid AND
        `banner_campagne`.deleted = 0 AND 
        `banner_campagne`.weergeven = 1
WHERE
    `banner_view`.campagne_uid = 6 AND `banner_view`.datetime >= '2019-07-31 00:00:00' AND `banner_view`.datetime < '2019-08-30 00:00:00'
GROUP BY
    `banner_view`.banner_uid

我希望查询运行大约5秒钟。

1 个答案:

答案 0 :(得分:1)

此查询所需的索引可能是:

  • banner_view(campagne_uid, datetime)
  • banner_campagne(banner_uid, weergeven, deleted)

请注意,索引中列的顺序确实很重要。