【问题标题】:My query is really slow even though it has an index即使有索引,我的查询也很慢
【发布时间】:2019-08-29 20:29:21
【问题描述】:

我们必须检查 700 万行才能进行campagne 统计。运行查询大约需要 30 秒,并且索引没有改善。

索引根本没有改变速度。

我尝试在 where 字段、where 字段 + group by 和 where 字段 + sum 上添加索引。

服务器类型为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 秒。

【问题讨论】:

    标签: mysql sql query-optimization


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      相关资源
      最近更新 更多