Mysql 查询中的相关计数
我们有78个广告按钮在我们的网站上,并已从主数据库的大小原因分离的统计数据。每次点击一个按钮,我们都会进行记录,我在一个统计屏幕上工作,可以快速获取信息 上面的查询可以工作,但运行起来需要4000秒(字面意思),如何才能更有效地获得相同的结果 以以下方式运行查询:Mysql 查询中的相关计数,mysql,Mysql,我们有78个广告按钮在我们的网站上,并已从主数据库的大小原因分离的统计数据。每次点击一个按钮,我们都会进行记录,我在一个统计屏幕上工作,可以快速获取信息 上面的查询可以工作,但运行起来需要4000秒(字面意思),如何才能更有效地获得相同的结果 以以下方式运行查询: SELECT buttonID, live, title, image, (SELECT COUNT(*) FROM otherdb.buttonclicks t2 WHERE t2.butt
SELECT
buttonID,
live,
title,
image,
(SELECT COUNT(*)
FROM otherdb.buttonclicks t2
WHERE t2.buttonid = t1.buttonID AND t2.`type`=0) as count
FROM buttons t1
GROUP BY buttonID
ORDER BY live DESC, buttonID ASC;
速度更快,但由于WHERE子句的原因,只能拾取过去三个月内单击过的按钮(我们将旧的单击存档)
解决方案?尝试在buttons和buttonclicks表上创建索引,以便查询可以向前查看所需字段。尝试此查询
SELECT
buttons.buttonID,
buttons.live,
buttons.title,
buttons.image,
count(buttonclicks.id) as count
FROM buttons INNER JOIN otherdb.buttonclicks ON buttons.buttonID = buttonclicks.buttonid
WHERE buttonclicks.type=0
GROUP BY buttons.buttonID
ORDER BY buttons.live DESC, buttons.buttonID ASC
我还观察到你有一个图像场。我认为查询速度很慢,因为它是一种处理图像对象的blob类型。您能
描述按钮图标和按钮吗?您是否正确设置了idex?在第二个查询中使用LEFT而不是INNER buttonID是buttonclicks的索引,buttonID是buttonclicks的索引buttons@symcbean试过了,但是WHERE子句仍然会影响结果,因为上面提到的buttonid是buttonclicks上的索引,buttonid是buttonclicks上的索引,buttonid是buttonid,buttonid是ButtonChange,在连接中将内部向左移动,我们得到了一个赢家谢谢你,布莱恩。
SELECT tbl1.buttonID,
tbl1.live,
tbl1.title,
tbl1.image,
COUNT(tbl2.buttonid) as count
FROM buttons AS tbl1
INNER JOIN (SELECT buttonid FROM otherdb.buttonclicks b WHERE b.type=0) tbl2
ON tbl1.buttonID = tbl2.buttonid
GROUP BY tbl1.buttonID
ORDER BY tbl1.live DESC, tbl1.buttonID ASC