gpt4 book ai didi

MYSQL: Query 2 tables with union 很慢,如何改善?

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

我想同时查询具有(几乎)相同行的 2 个表。结果,我想获取最近的 5 个条目(按日期排序,总共),无论它们来自哪个表

到目前为止,我试过这个:

SELECT date, name, text FROM `table_A` 
UNION
SELECT date, name, text FROM `table_B` ORDER BY date desc LIMIT 5

不幸的是,这个查询大约需要 20 秒(两个表都有大约 300.000 行)。

当我这样做的时候:

SELECT date, name, text FROM `table_A` ORDER BY date desc LIMIT 5

SELECT date, name, text FROM `table_B` ORDER BY date desc LIMIT 5

查询只需要几毫秒。

所以我的问题是:我怎样才能提高我的查询速度或者我应该使用什么选择查询来从两个表中获取最新的 5 行?

最佳答案

在组合它们之前选择每个表中最近的 5 行。

SELECT *
FROM (
(SELECT date, name, text FROM table_A ORDER BY date DESC LIMIT 5)
UNION
(SELECT date, name, text FROM table_B ORDER BY date DESC LIMIT 5)
) x
ORDER BY date DESC
LIMIT 5

您的查询的问题是它首先合并整个表并删除重复项,然后再进行排序和限制。合并表没有索引,所以这部分很慢。

关于MYSQL: Query 2 tables with union 很慢,如何改善?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46794089/

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