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
fasterUNION ALL
?在我看来,是的,UNION很好,但在选择几行时,您不会感觉到差异(您只能在具有大量数据的生产环境中使用)尝试使用UNION
查找未索引列和UNION ALL
,然后查看执行计划中的差异。UNION ALL
通常比UNION
快,因为不需要排序(排序通常用于删除重复项)。在这个特定的查询中,除非一个表的id
列中有重复的行,否则永远不会有重复的行。使用UNION
是多余的。你确定吗?UNION
更快UNION ALL
?在我看来,是的,UNION很好,但在选择几行时,你不会感觉到差异(您可以实现仅在具有海量数据的生产环境中使用)尝试UNION
查找未索引列和UNION ALL
,然后查看执行计划中的差异。UNION ALL
通常比UNION
快,因为不需要排序(排序通常用于删除重复项)。在这个特定的查询中,除非表的id
列中有重复的行,否则永远不会有重复的行,使用UNION
是多余的。