php - 性能 : SQL Queries vs Server-Side PHP Loops (MYSQL vs PHP)

标签 php mysql sql loops

我没有看到太多关于这个主题的信息,需要一些数据。我不熟悉使用复杂的 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/

相关文章:

mysql - 从两个表中选择?

MySQL按一列分组,但选择所有数据

php - Laravel Eloquent Complex Join Statement - 提供了具体的例子

PHP在XSLT1中注册了函数,如何用PHP返回XML片段?

php - foreach 函数不适用于 CodeIgniter

php - IMAP编码解码: UTF-8 issue

java.sql.SQLException : After end of result set in mysql 异常

mysql - 使用不同线程的mysql中的内存泄漏

mysql - 如何获得相同的行值

PHP 只在数组中存储 1048576 个字符