两视图用union all后不走索引,但是用select再包一层查询又走索引原因

sevenhc 2013-08-28 02:00:52
两视图用union all后不走索引,但是用select再包一层查询又走索引原因?
测试(不走索引):
select * from v_gisotermjump where atermtype =86 and aconnectorid = 3814606
union all
select * from v_gisotermjump where ztermtype =86 and zconnectorid = 3814606;
测试(走索引):
select * from (
select * from v_gisotermjump where atermtype =86 and aconnectorid = 3814606
union all
select * from v_gisotermjump where ztermtype =86 and zconnectorid = 3814606);
一上脚本结果查看执行计划得出。请教高手给出原因,谢谢!
...全文
1793 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pobaby 2013-08-29
  • 打赏
  • 举报
回复
引用 2 楼 sevenhc 的回复:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Prod版本,谢谢!
如果你查询条件即使是索引,但查询结果集大于表的 85%以上,就不走索引了。记得以前试验过这个问题。
空心兜兜 2013-08-29
  • 打赏
  • 举报
回复
索引是在哪些列上?
jdsnhan 2013-08-29
  • 打赏
  • 举报
回复
oracle10是基于成本的优化,如果你表中数据量很小,走索引与否的成本消耗很类似,在某个点上这种情况是正常的
sevenhc 2013-08-28
  • 打赏
  • 举报
回复
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Prod版本,谢谢!
pobaby 2013-08-28
  • 打赏
  • 举报
回复
为什么我本地 两个视图 UNION ALL 走索引呢。。你的数据时什么版本的。
限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务 为什么需要掌握高性能的MySQL实战? 由于互联网产品用户量大、高并发请求场景多,因此对MySQL的性能、可用性、扩展性都提出了很高的要求。使用MySQL解决大量数据以及高并发请求已经是程序员的必备技能,也是衡量一个程序员能力和薪资的标准之一。 为了让大家快速系统了解高性能MySQL核心知识全貌,我为你总结了「高性能 MySQL 知识框架图」,帮你梳理学习重点,建议收藏! 【课程设计】 课程分为四大篇章,将为你建立完整的 MySQL 知识体系,同时将重点讲解 MySQL 底层运行原理、数据库的性能调优、高并发、海量业务处理、面试解析等。 一、性能优化篇: 主要包括经典 MySQL 问题剖析、索引底层原理和事务与锁机制。通过深入理解 MySQL 的索引结构 B+Tree ,学员能够从根本上弄懂为什么有些 SQL 索引、有些不索引,从而彻底掌握索引的使用和优化技巧,能够避开很多实战中遇到的“坑”。 二、MySQL 8.0新特性篇: 主要包括窗口函数和通用表表达式。企业中的许多报表统计需求,如果不采用窗口函数,用普通的 SQL 语句是很难实现的。 三、高性能架构篇: 主要包括主从复制和读写分离。在企业的生产环境中,很少采用单台MySQL节点的情况,因为一旦单个节点发生故障,整个系统都不可用,后果往往不堪设想,因此掌握高可用架构的实现是非常有必要的。 四、面试篇: 程序员获得工作的第一步,就是高效的准备面试,面试篇主要从知识点回顾总结的角度出发,结合程序员面试高频MySQL问题精讲精练,帮助程序员吊打面试官,获得心仪的工作机会。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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