加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

php – MySQL:如安在单个查询中查询多个“统计信息”?

发布时间:2021-03-23 05:58:17 所属栏目:编程 来源:网络整理
导读:这更像是一个题目,而不是我必要办理的题目.我的后端很快,我的查询运行得很好,以是它并不重要.好的,可是让我们开始吧. 我的仪表板上有4个统计小组,关于本日,昨天,本周和本月的寓目录数;每小我私人在我的数据库中占用一个查询.我想知道的是,怎样将全部这些查询放在

这更像是一个题目,而不是我必要办理的题目.我的后端很快,我的查询运行得很好,以是它并不重要.好的,可是让我们开始吧.

我的仪表板上有4个统计小组,关于本日,昨天,本周和本月的寓目录数;每小我私人在我的数据库中占用一个查询.我想知道的是,怎样将全部这些查询放在一路以减轻数据库/处事器上的负载?

我在扣问之前正在查察Stackoverflow,看到一小我私人说的话:

SUM(case when status = 'open' then 1 else 0 end) as [Open],SUM(case when status = 'closed' then 1 else 0 end) as [Closed]

资料来历:Gathering multiple statistics about a table in a single query

这也许是我必要的,也许是这样的:

SUM(case when DATE(created_at) = '2015-07-23' then 1 else 0 end) as today,SUM(case when DATE(created_at) = '2015-07-22' then 1 else 0 end) as yesterday,SUM(case when WEEK(created_at) = '29' then 1 else 0 end) as week,SUM(case when MONTH(created_at) = '7' then 1 else 0 end) as month

我只是想知道是否有人有更好的提议,由于我已将此应用于我的成果,它事变得很好. 最佳谜底 评述提供了很好的提醒.我将在这里提供另一个设法,观念上用于我一向在行使的大大都银行.

假若稀有十亿行,而且您不必要为每个哀求提供精确的即时快照(意味着:您对轻微过期的数据有容忍度),则值得试探批处理赏罚进程.

这是它的事变道理:

>您界说了滞后容差:譬喻:“我对数据过期8小时没题目”.这是批处理赏罚的周期性.
>您对数据库举办非类型化,以添加存储您选择的运行总计的“冗余”列/表.譬喻,您将添加一个名为statistics_snapshot的表,个中包括4列:(时刻戳,月,日,周)或相同的内容.
>您在mysql中建设一个存储进程,用您的4个查询添补此表,可能凭证您的提议添补一个全局查询.时刻戳也会被注册,因此您知道它何时被拍摄.
>仅为该进程建设具有EXECUTE授权的用户.

CREATE USER 'cron_mysql_user'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT EXECUTE ON PROCEDURE db_name.proc_name TO 'cron_mysql_user'@'localhost';

>您行使DBMS_JOB cron功课毗连mysql并行使第1点中界说的周期运行此进程.凡是,您可以从呼吁行运行剧本,如下所示:

mysql --user='cron_mysql_user'@'localhost' -pstrongpassword --execute="call proc_name()" db_name

>您可以按照按期快照建设大度的陈诉:-)

这样做的甜头是,您天天只能以受控方法齐集I / O屡次,因此当您必要相识统计信息时,您只必要执行很是轻松的SELECT语句.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读