mysql - 当我们需要在条件略有变化的情况下多次运行相同的查询时,如何减少服务器上的负载

标签 mysql performance server load

编辑

是否最好将所有查询合并到 1 个单个选择中,例如 select (select...) as q1, (select...) as q2

结束编辑

我需要对一年中的每个月运行相同的以下查询。

每个查询之间的区别仅在于添加group by或删除单个条件。

第一次查询:我需要计算完成的总访问次数

SELECT 
    count(*)
from 
    visit 
where 
    visit_status='Active' 
AND 

    month(visit.date_of_visit)=month(:selectedDate)
AND
    year(visit.date_of_visit)=year(:selectedDate)

当然:selectedDate将通过PHP中的绑定(bind)值来设置。

第二个查询:是关于计算患者数量(而不是访问次数),只需添加 group by Visit.patent_id

SELECT 
    count(*)
from 
    visit 
where 
    visit_status='Active' 
    AND 

        month(visit.date_of_visit)=month(:selectedDate)
    AND
        year(visit.date_of_visit)=year(:selectedDate)
group by visit.patient_id

然后我将使用 rowCount 来获取结果,因为返回值是由 group by 产生的行。

应该重复相同的查询,但现在没有日期,这意味着从第一次在系统上注册数据开始计数:

SELECT 
    count(*)
from 
    visit 
where 
    visit_status='Active' 

group by visit.patient_id

我使用以下方法没有遇到错误,但是有没有更好的方法来做到这一点并通过最小化查询数量来减少服务器上的负载?

最佳答案

试试这个。

select COUNT(distinct (visit.patient_id))  from visit where  visit_status='Active' 

关于mysql - 当我们需要在条件略有变化的情况下多次运行相同的查询时,如何减少服务器上的负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50810171/

相关文章:

c++ - 寻找除数对

c# - 当不抛出异常时,try/catch block 会影响性能吗?

c++ - Websocket 广播不工作

c# - 无法从应用程序配置读取连接字符串

MySQL 从多个表中选择 2 个项目

mysql - 保护 TaffyDB 等客户端数据库

mysql - 求和返回字符串,仅适用于 postgresql

wcf - 我的测试表明 .NET Remoting 比 WCF 4 快 1.5 倍

php - 使数据不可编辑,但在 php mysql 中单击按钮时保持可读

c# - 如果我们传递对象本身,为什么我们需要 EventArgs? C#