0

什么会更快:

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

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

或者

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

?

4

1 回答 1

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
于 2013-02-19T16:36:00.110 回答