首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL:查询2表与联合非常慢,如何改进?

MYSQL:查询2表与联合非常慢,如何改进?
EN

Stack Overflow用户
提问于 2017-10-17 15:44:21
回答 1查看 749关注 0票数 3

我想用(几乎)相同的行同时查询两个表。因此,我希望得到5个最近的条目(按日期排序,总计),不管它们来自哪个表

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

代码语言:javascript
复制
SELECT date, name, text FROM `table_A` 
UNION 
SELECT date, name, text FROM `table_B` ORDER BY date desc LIMIT 5

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

当我这么做的时候

代码语言:javascript
复制
SELECT date, name, text FROM `table_A` ORDER BY date desc LIMIT 5

代码语言:javascript
复制
SELECT date, name, text FROM `table_B` ORDER BY date desc LIMIT 5

查询只需几毫秒。

,所以我的问题是:如何改进我的查询以使查询更快,或者我应该使用什么选择查询来从两个表中获得最新的5行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-17 15:49:08

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

代码语言:javascript
复制
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

查询的问题是,在执行排序和限制之前,首先要合并整个表并移除重复的表。合并的表没有索引,所以这个部分很慢。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46794089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档