优化UNION MySQL查询

我使用UNION查询提取根据日期两个表的数据。 下面查询

SELECT title, id, date as date_added FROM test1 WHERE test1.id UNION SELECT title, customer as id, date_added FROM test2 WHERE test2.id ORDER BY date_added DESC LIMIT 0,8

我有一个日期指数和DATE_ADDED对每个表...问题是,查询不优化,当我使用EXPLAIN它显示两个表中的所有行被选中给我的输出。

是否有这样做查询,以便它可以被优化的任何其他方式? 我能想到的唯一的办法是用极限分别运行两个查询,并在应用程序对数据进行排序,但现在看来,这是不可能的,我与应用程序执行分页。

--------------解决方案-------------

我不是最好的专家,但我会假设,因为的UNION MySQL需要来选择和它执行之前合并两个结果集ORDER荷兰国际集团,因此,这可能被提供潜在的结果集的优化LIMIT子句,不会发生。

也许这个问题可以适用于您的情况也是如此:

在MySQL查询结合UNION和LIMIT操作

什么你基本上呈现的是,你有你的模型设计问题,即它似乎是错误的选择implemententing超/亚型时,被做了。 你的功能要求是有两个不同表(simular)数据为一个统一的设置。 这将是简单的,如果所有的行已经在一个表。 所以,真正的问题是,为什么他们没有。

你仍然可以得到此查询快(我假设),但它的丑陋。

SELECT * FROM
(SELECT * FROM (select title, id, date as date_added from test1
ORDER BY date_added DESC LIMIT 0,8) t1
UNION ALL
SELECT * FROM (select title, customer as id, date_added from test2
ORDER BY date_added DESC LIMIT 0,8) t2
) joined
ORDER BY date_added DESC
LIMIT 0,8

分类:MySQL的 时间:2015-03-15 人气:3
本文关键词: mysql的,工会
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.444 (s). 10 q(s)