mysql的查询好难_【讨论】复杂SQL查询是否很难优化了?

今天在一个子产品中监控发现SQL如下

SELECT COUNT(DISTINCT CASE

WHEN isnew = 1 THEN

visitorid

END) AS sumnuv,

COUNT(*) AS sumpv,

COUNT(DISTINCT visitorid) AS sumuv,

COUNT(DISTINCT visitid) AS sumvt,

COUNT(DISTINCT ip_addr) AS sumip,

ROUND(SUM(stime) / COUNT(DISTINCT visitid)) AS avgstime,

ROUND(SUM(atime) / COUNT(DISTINCT visitid)) AS avgatime,

ROUND(SUM(ltime) / COUNT(DISTINCT visitid)) AS avgltime,

ROUND(COUNT(CASE

WHEN entry_flag = 1 AND exit_flag = 1 THEN

1

END) / COUNT(DISTINCT visitid) * 100,

2) AS jumprate1,

ROUND(COUNT(CASE

WHEN entry_flag = 1 AND exit_flag = 1 AND atime <= 5 THEN

1

END) / COUNT(DISTINCT visitid) * 100,

2) AS jumprate2,

IFNULL(SUM(tf_times), 0) AS sumtf

FROM as_pv_20110523

WHERE siteid = 20381

表as_pv_20110523  记录数 809213

执行计划

+----+-------------+----------------+------+---------------+------------+---------+-------+--------+-------+

| id | select_type | table          | type | possible_keys | key        | key_len | ref   | rows   | Extra |

+----+-------------+----------------+------+---------------+------------+---------+-------+--------+-------+

|  1 | SIMPLE      | as_pv_20110523 | ref  | idx_siteid    | idx_siteid | 4       | const | 303182 |       |

+----+-------------+----------------+------+---------------+------------+---------+-------+--------+-------+

然后执行了下

e317cfcf1d216b80b6a1f82cc4a820c8.gif

+--------+--------+--------+--------+--------+----------+----------+----------+-----------+-----------+-------+

| sumnuv | sumpv  | sumuv  | sumvt  | sumip  | avgstime | avgatime | avgltime | jumprate1 | jumprate2 | sumtf |

+--------+--------+--------+--------+--------+----------+----------+----------+-----------+-----------+-------+

| 424475 | 760279 | 627924 | 714474 | 540253 |       39 |       12 |      100 |     95.14 |     56.30 |     0 |

+--------+--------+--------+--------+--------+----------+----------+----------+-----------+-----------+-------+

1 row in set (3 min 19.27 sec)

居然要这么长时间

e317cfcf1d216b80b6a1f82cc4a820c8.gif

我把一些主要的参数稍微调整了下,但是速度还是比较慢

1、我知道复杂查询在MySQL中开销是硬开销,是不是很难优化?

2、一些my.cnf中的主要和相关参数我都已经调整过了,怎么还是这么慢

怎么提高这个查询的速度呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值