我没有看到太多关于这个主题的信息,需要一些数据。我不熟悉使用复杂的 MySQL 查询,我想知道复杂查询与简单查询相比的性能成本,然后在其上运行服务器端 php 计算。
例如:
“简单”查询:
SELECT id as ID, date(x_date), v_price as price
From tableX
WHERE v_price IN
(
select MIN(v_price) from tableX
GROUP BY week(x_date)
)
)
现在假设我想计算类似价格出现的次数。
我可以通过两种方式做到这一点。
A) 使用 foreach 循环服务器端 php 并计算数据
B) 在 sql 中做另一个选择
group by price
ORDER BY COUNT(price) DESC
哪种方法最好?通过 SQL 或服务器代码 (php)
什么是性能成本、时间、服务器负载等......
最佳答案
首先,在数据库中进行工作几乎总是更好。对于有人想要进行 RBAR(逐行痛苦行)处理的每个上下文,都会多次讨论这一点。
其次,这个“简单”查询极不可能执行您想要的操作:
SELECT id as ID, date(x_date), v_price as price
From tableX
WHERE v_price IN (select MIN(v_price) from tableX FROM tableX GROUP BY week(x_date))
这将返回 tableX
中最低价格与任何 周最低价格匹配的所有行。更有可能的是,您想要:
SELECT id as ID, date(x_date), v_price as price
From tableX
WHERE (yearweek(x_date), v_price) IN (
select yearweek(x_date), MIN(v_price)
from tableX
group by yearweek(x_date)
);
请注意,这也考虑了年份。
关于php - 性能 : SQL Queries vs Server-Side PHP Loops (MYSQL vs PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905901/