Php 工会对全体工会的表现
我通过UNION或UNION ALL从多个表中选择一列外键 对于性能问题,如果重复项无关紧要,通常建议使用UNION ALL而不是UNION。但是,在我的调用PHP脚本中,在没有重复的情况下循环和操作数据会更有效 因此,我可以使用以下任一选项: 选项1: 在数据库中使用UNION消除重复项 选项2: 在数据库中使用UNION ALL,并使用array_unique()或其他类似函数消除PHP脚本中的数据 我的假设是,在大多数情况下,选项1将是首选和更有效的方法,但我没有任何证据支持该假设,也不确定测试它的最佳方法,特别是因为它可能在很大程度上取决于数据是什么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之间的性能差异都与 需要获得不同的结果,为此需要数据库引擎和查询优化器 肯定比应用程序中基于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实际上,如果你阅读了两个投票率最高的答案下的所有评论,你会看到我大约一小时前在那里发表了一条评论。我确实读了那篇帖子和其他一些帖子上的评论,没有找到一个满意的答案来回答我的问题。所以我在这里问一个问题。你能解释一下工会和工会的区别吗?我以为是自动联盟