gpt4 book ai didi

mysql - 查询单独运行快,在 UNION 下运行慢

转载 作者:行者123 更新时间:2023-11-29 02:06:02 25 4
gpt4 key购买 nike

我有一个需要几分钟才能运行的查询。我想我可以让它以四个单独的查询运行得更快,然后是 UNION。我至少对四个单独的查询部分是正确的。他们跑,从最慢到最快,分别是 ~7 秒、~1 秒、< 1 秒和 < 1 秒。

所以我认为所有这些的 UNION 最慢会运行大约 7 + 1 + 1 + 1 = 10 秒。但是,当我运行此 UNION 查询时,它需要 100 多秒。

(select id from view_macatawa_prospect_match_first_and_last_name)
union
(select id from view_macatawa_prospect_match_full_name)
union
(select id from view_macatawa_prospect_match_just_address)
union
(select id from view_macatawa_prospect_match_name_and_address)

为什么 UNION 会让这些都变慢?在我看来,MySQL 所要做的就是执行四个查询,然后连接结果。

编辑:我想我并没有问我真正想要的是什么:一种使该查询快速运行的方法。

最佳答案

问题是 union 删除了重复项。所以这不仅仅是运行查询。

尝试使用 union all 而不是 union

这样,就不会删除重复项:

(select id from view_macatawa_prospect_match_first_and_last_name)
union all
(select id from view_macatawa_prospect_match_full_name)
union all
(select id from view_macatawa_prospect_match_just_address)
union all
(select id from view_macatawa_prospect_match_name_and_address)

使用 union all,您应该可以更接近于分别运行查询时的结果。

关于mysql - 查询单独运行快,在 UNION 下运行慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5824756/

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