Mysql 如何优化此联合查询

Mysql 如何优化此联合查询,mysql,select,Mysql,Select,我有一个问题 SELECT `id`,'event' as type FROM `oc_event` where `Owner_id` = 1 UNION ALL SELECT `id` ,'business' as type FROM `oc_business` where `Owner_id` = 1 UNION ALL SELECT `id`, 'parts' as type FROM `oc_listing` where `Owner_id` =

我有一个问题

    SELECT `id`,'event' as type FROM `oc_event` where `Owner_id` = 1
    UNION ALL
    SELECT `id` ,'business' as type FROM `oc_business` where `Owner_id` = 1
    UNION ALL
    SELECT `id`, 'parts'  as type FROM `oc_listing` where `Owner_id` = 1
虽然,结果是准确的,但当获取的行数约为1K或更多时,结果会非常缓慢。。 是否有任何类型的mysql关键字来优化这个简单的查询,或者您认为“UNIONALL”是正确的方法


附言:我正在使用PDO

如果您想显示重复数据,那么最好使用union all 其他明智的使用联盟 当找到一行时,它将停止 联合会的结果会更快


为了更好地查询,请在所有者id上创建所有表的索引

如果要显示重复数据,最好使用union all 其他明智的使用联盟 当找到一行时,它将停止 联合会的结果会更快



为了使您的查询更好地在owner\u id上创建索引,所有的表

是否在
owner\u id
上建立了索引?您的union all查询中有order by子句?@HamletHakobyan没有,没有索引,我无法更改数据库结构:(@ViswanathanIyer不,没有order by子句。您没有访问DB?您是否在
所有者id
上建立了索引?您的union all查询中有order by子句?@HamletHakobyan不,没有索引,我无法更改DB结构:(@ViswanathanIyer不,没有order by子句。您没有访问DB的权限?您确定吗?
UNION
faster
UNION ALL
?在我看来,是的,UNION很好,但在选择几行时,您不会感觉到差异(您只能在具有大量数据的生产环境中使用)尝试使用
UNION
查找未索引列和
UNION ALL
,然后查看执行计划中的差异。
UNION ALL
通常比
UNION
快,因为不需要排序(排序通常用于删除重复项)。在这个特定的查询中,除非一个表的
id
列中有重复的行,否则永远不会有重复的行。使用
UNION
是多余的。你确定吗?
UNION
更快
UNION ALL
?在我看来,是的,UNION很好,但在选择几行时,你不会感觉到差异(您可以实现仅在具有海量数据的生产环境中使用)尝试
UNION
查找未索引列和
UNION ALL
,然后查看执行计划中的差异。
UNION ALL
通常比
UNION
快,因为不需要排序(排序通常用于删除重复项)。在这个特定的查询中,除非表的
id
列中有重复的行,否则永远不会有重复的行,使用
UNION
是多余的。