gpt4 book ai didi

php - MySQL 性能——多个查询还是一个低效查询?

转载 作者:可可西里 更新时间:2023-11-01 08:01:41 26 4
gpt4 key购买 nike

我有三张表,每张表都包含一些公共(public)信息,以及一些该表特有的信息。例如:uiddate在表中是通用的,但是一个表可以包含一列type,而另一个表包含currency。我需要查询数据库并获取在所有三个表中输入的最后 20 个条目 (date DESC)。我的选择是:

  1. 用一个大查询查询数据库一次,包含三个 UNION ALL 子句,并传递列的假值,IE:

    FROM    (
    SELECT uid, date, currency, 0, 0, 0

    以后

    FROM    (
    SELECT uid, date, 0, type, 0, 0

    这会让我分配空值字段..

  2. 或者我可以查询数据库三次,并以某种方式在 PHP 中对信息进行排序,以获取最新的 20 条帖子的组合。这会给我留下过多的信息 - 60 个帖子需要查看 (LIMIT 20) * 3 - 并迫使我每次都执行某种类型的附加快速排序。

哪个选项更好/有其他想法吗?

谢谢。

最佳答案

这两个选项比你说的更相似。

当您使用 UNION 执行单个大型查询时,MySQL 仍将执行三个单独的查询,就像您在替代计划中建议的那样,然后将它们组合成一个结果。

因此,您可以让 MySQL 为您执行过滤(和 LIMIT),也可以您自己执行。鉴于这种选择,让 MySQL 完成所有工作听起来更可取。

结果集中有额外的列理论上会影响性能,但对于像 20 行这样小的结果集,我不认为它会产生任何可检测的影响。

关于php - MySQL 性能——多个查询还是一个低效查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1260038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com