Php 循环数据vs mysql在哪里

Php 循环数据vs mysql在哪里,php,mysql,performance,Php,Mysql,Performance,什么工作更快: 使用运行查询: 连接两个表(18000行,15500行)并使用多个WHERE(9-12个WHERE)过滤数据,这样我只得到15行结果我需要使用不同的WHERE过滤器运行此查询4次,每次都将结果项添加到不同的数组(4个数组) 或 运行一次查询:连接两个表(18000行,15500行)返回所有数据,循环结果,在循环中我将有4个if语句(基本上替换WHERE过滤器),并将匹配项添加到数组中。 ?使用案例语句同时执行这两种操作如何: select (case when <w

什么工作更快:

  • 使用运行查询:
    连接两个表(18000行,15500行)并使用多个WHERE(9-12个WHERE)过滤数据,这样我只得到15行结果

    我需要使用不同的WHERE过滤器运行此查询4次,每次都将结果项添加到不同的数组(4个数组)

  • 运行一次查询:
    连接两个表(18000行,15500行)返回所有数据,循环结果,在循环中我将有4个if语句(基本上替换WHERE过滤器),并将匹配项添加到数组中。

使用
案例
语句同时执行这两种操作如何:

select (case when <where1> then 1 else 0 end) as Where1,
       (case when <where2> then 1 else 0 end) as Where2,
. . .

我认为,如果您直接向mysql引擎生成语句,会比返回这么多行进行过滤要好,这取决于您的表结构和处理类型。尝试这两个选项,看看哪一个更快。如果where子句使用相同的字段但不同的值,则应使用参数化查询,因为这将允许SQL引擎缓存查询,提供最佳性能。还取决于机器的处理能力和可用ram,但通常在db服务器上进行排序比在脚本中进行排序更快。这是因为在高负载环境中,DB服务器通常是一台健壮的机器,web服务器是一台坐在角落里的奔腾2,上面有一杯4岁的半杯咖啡。。。或者仅仅是我的web服务器,考虑到性能、内存使用等,如果结果数量很多,则不建议返回所有结果并循环它们。但是,您可以在业务逻辑(在我的例子中是Java语言)中对mysql中成本高昂的一些操作进行过滤。例如,与在mysql中的未索引字段上使用类似“%text%”的方法不同,可以在返回结果后在java逻辑中完成此过滤。
select (case when <where1> then 'where1'
             when <where2> then 'where2'
             . . .
        end) as which