Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 工会对全体工会的表现_Php_Mysql_Performance_Union_Union All - Fatal编程技术网

Php 工会对全体工会的表现

Php 工会对全体工会的表现,php,mysql,performance,union,union-all,Php,Mysql,Performance,Union,Union All,我通过UNION或UNION ALL从多个表中选择一列外键 对于性能问题,如果重复项无关紧要,通常建议使用UNION ALL而不是UNION。但是,在我的调用PHP脚本中,在没有重复的情况下循环和操作数据会更有效 因此,我可以使用以下任一选项: 选项1: 在数据库中使用UNION消除重复项 选项2: 在数据库中使用UNION ALL,并使用array_unique()或其他类似函数消除PHP脚本中的数据 我的假设是,在大多数情况下,选项1将是首选和更有效的方法,但我没有任何证据支持该假设,也不确

我通过UNION或UNION ALL从多个表中选择一列外键

对于性能问题,如果重复项无关紧要,通常建议使用UNION ALL而不是UNION。但是,在我的调用PHP脚本中,在没有重复的情况下循环和操作数据会更有效

因此,我可以使用以下任一选项:

选项1:

在数据库中使用UNION消除重复项

选项2:

在数据库中使用UNION ALL,并使用array_unique()或其他类似函数消除PHP脚本中的数据

我的假设是,在大多数情况下,选项1将是首选和更有效的方法,但我没有任何证据支持该假设,也不确定测试它的最佳方法,特别是因为它可能在很大程度上取决于数据是什么


在大多数情况下,我的假设正确吗?若然,原因为何?如果不是,为什么不呢?

主要的方面是联合是联合的捷径,因此

UNION和UNION之间的性能差异都与 需要获得不同的结果,为此需要数据库引擎和查询优化器 肯定比应用程序中基于PHP代码的过滤算法更有效

此外,dictinct操作还可以从按功能分组的预优化中获益

不仅如此,重复数据过滤通常基于有序数据 虽然select sql函数在没有显式排序的情况下工作, 因此,使用应用程序过滤数据的需要可能会导致效率降低,查询时间更长


一般来说,db引擎比应用程序PHP函数代码更高效,因此选项1通常是更好的选择。主要方面是UNION是UNION DISTINCT的快捷方式,因此

UNION和UNION之间的性能差异都与 需要获得不同的结果,为此需要数据库引擎和查询优化器 肯定比应用程序中基于PHP代码的过滤算法更有效

此外,dictinct操作还可以从按功能分组的预优化中获益

不仅如此,重复数据过滤通常基于有序数据 虽然select sql函数在没有显式排序的情况下工作, 因此,使用应用程序过滤数据的需要可能会导致效率降低,查询时间更长


一般来说,db引擎的效率比应用程序PHP函数的代码要高得多,因此选项1在速度方面通常是更好的选择,它相对来说是微不足道的。执行所有
选择所需的工作要比执行重复数据消除(无论采用哪种方式)所需的工作都要多

因此,我建议说
UNION DISTINCT
,因为对您来说,这比
array\u unique(…)
要少

其他考虑:

  • UNION ALL
    会将更多的东西从服务器铲到客户端;这(在极端或遥远的情况下)可能是性能的一个因素
  • 如果您在
    UNION
    上也在说
    ORDER BY
    ,那么您也可以执行
    DISTINCT
  • 分组依据
    (在
    联合体上
    )具有
    不同
    的效果
  • 如果您谈论的是数百万行,请记住PHP可以达到数组的内存限制,而MySQL本质上是无限的

    • 就速度而言,它相对来说是微不足道的。执行所有
      选择所需的工作要比执行重复数据消除(无论采用哪种方式)所需的工作都要多

      因此,我建议说
      UNION DISTINCT
      ,因为对您来说,这比
      array\u unique(…)
      要少

      其他考虑:

      • UNION ALL
        会将更多的东西从服务器铲到客户端;这(在极端或遥远的情况下)可能是性能的一个因素
      • 如果您在
        UNION
        上也在说
        ORDER BY
        ,那么您也可以执行
        DISTINCT
      • 分组依据
        (在
        联合体上
        )具有
        不同
        的效果
      • 如果您谈论的是数百万行,请记住PHP可以达到数组的内存限制,而MySQL本质上是无限的

      测试这两个选项,您将看到。答案是这取决于具体情况。测试两者以找出答案。@TimBiegeleisen您将此链接作为副本链接,但是,该页面上没有任何内容可以回答我的问题。它只是重申了我在问题中已经说过的内容。@kojow7我不同意,如果你真的在两个投票率最高的答案下发表了所有评论,你就会得到你想要的答案。@TimBiegeleisen实际上,如果你阅读了两个投票率最高的答案下的所有评论,你会看到我大约一小时前在那里发表了一条评论。我确实读了那篇帖子和其他一些帖子上的评论,没有找到一个满意的答案来回答我的问题。因此,我在这里问一个问题。测试两个选项,你就会看到。答案是这取决于。测试两者以找出答案。@TimBiegeleisen您将此链接作为副本链接,但是,该页面上没有任何内容可以回答我的问题。它只是重申了我在问题中已经说过的内容。@kojow7我不同意,如果你真的在两个投票率最高的答案下发表了所有评论,你就会得到你想要的答案。@TimBiegeleisen实际上,如果你阅读了两个投票率最高的答案下的所有评论,你会看到我大约一小时前在那里发表了一条评论。我确实读了那篇帖子和其他一些帖子上的评论,没有找到一个满意的答案来回答我的问题。所以我在这里问一个问题。你能解释一下工会和工会的区别吗?我以为是自动联盟