mysql 视图中有 union all 的效率问题

cshzxq2000 2013-07-29 11:40:16
有A、B两个表,A表中有字段C、B表中也有字段C并且都有索引,如果单独查字段C,两个表都是可以秒杀的,但是我想建个视图,直接查询字段C,但是要使用union all 。使用union all 后查询速度很慢,如果提高效率?
...全文
758 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-08-02
  • 打赏
  • 举报
回复
explain一下看看执行计划
cshzxq2000 2013-07-29
  • 打赏
  • 举报
回复
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_c` AS select C,c1 from A union all select C,C2 from B A、B为物理表且字段C都有索引 select *from view_c where C=xxx 使用这个语句时速度非常慢
ACMAIN_CHM 2013-07-29
  • 打赏
  • 举报
回复
你用的SQL语句是什么? 贴出以供分析。
cshzxq2000 2013-07-29
  • 打赏
  • 举报
回复
explain显示没有使用到索引!
rucypli 2013-07-29
  • 打赏
  • 举报
回复
explain一下看看执行计划
cshzxq2000 2013-07-29
  • 打赏
  • 举报
回复
是的,非常慢。 单独查秒杀,用了union all 要十多秒
rucypli 2013-07-29
  • 打赏
  • 举报
回复
不会慢吧 视图还是转化成事实表的 select * from (select * from A union all select * from B) tmp where tmp.C=xxx; 这个慢吗
ACMAIN_CHM 2013-07-29
  • 打赏
  • 举报
回复
show index from A; show index from B; explain select *from view_c where C=xxx; 以供分析。 另外请贴文本,不要贴图。
cshzxq2000 2013-07-29
  • 打赏
  • 举报
回复


Rotel-刘志东 2013-07-29
  • 打赏
  • 举报
回复
贴出具体的执行计划分析一下。
ACMAIN_CHM 2013-07-29
  • 打赏
  • 举报
回复
select C,c1 from A where C=xxx union all select C,C2 from B where C=xxx 看一下速度如何。 另外贴出 show index from A; show index from B; explain select *from view_c where C=xxx; 以供分析。
cshzxq2000 2013-07-29
  • 打赏
  • 举报
回复
没有办法么?

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧