循环数据vs mysql WHERE

时间:2013-02-19 16:16:14

标签: php mysql performance

什么能更快地发挥作用:

  • 使用以下方式运行查询:
    加入2个表(18000行,15500行)并使用多个WHERE(9-12 WHERE)过滤数据,这样我得到的结果只有15行。

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

OR

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

1 个答案:

答案 0 :(得分:0)

如何使用case语句两者

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

然后你可以带回一小组行,并确定它们在应用程序中的位置。

您的问题很难回答,因为它取决于处理查询,返回结果以及浏览应用程序中的结果集所花费的时间。一般来说,我认为返回成千上万行是一件坏事(性能方面),而只返回少量行。但是,在某些环境中,它可能是更好的方法。

如果所有where子句都返回不相交的行集,那么您可以将它们放在一个派生列中:

select (case when <where1> then 'where1'
             when <where2> then 'where2'
             . . .
        end) as which