----UNION 是需要排序的

drop table t1 purge;

create table t1 as select * from dba_objects where object_id is not null;

alter table t1 modify OBJECT_ID not null;

drop table t2 purge;

create table t2 as select * from dba_objects where object_id is not null;

alter table t2 modify OBJECT_ID not null;

set linesize 1000

set autotrace traceonly

select object_id from t1

union

select object_id from t2;

执行计划

------------------------------------------------------------------------------------

| Id  | Operation           | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |

------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT    |      |   136K|  1732K|       |  1241  (55)| 00:00:15 |

|   1 |  SORT UNIQUE        |      |   136K|  1732K|  2705K|  1241  (55)| 00:00:15 |

|   2 |   UNION-ALL         |      |       |       |       |            |          |

|   3 |    TABLE ACCESS FULL| T1   | 57994 |   736K|       |   292   (1)| 00:00:04 |

|   4 |    TABLE ACCESS FULL| T2   | 78456 |   996K|       |   292   (1)| 00:00:04 |

------------------------------------------------------------------------------------

统计信息

----------------------------------------------------------

0  recursive calls

0  db block gets

2094  consistent gets

0  physical reads

0  redo size

1062305  bytes sent via SQL*Net to client

54029  bytes received via SQL*Net from client

4876  SQL*Net roundtrips to/from client

1  sorts (memory)

0  sorts (disk)

73120  rows processed

--发现索引无法消除UNION 排序(INDEX FAST FULL SCAN)

create index idx_t1_object_id on t1(object_id);

create index idx_t2_object_id on t2(object_id);

set autotrace traceonly

set linesize 1000

select  object_id from t1

union

select  object_id from t2;

执行计划

---------------------------------------------------------------------------------------------------

| Id  | Operation              | Name             | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT       |                  |   136K|  1732K|       |   755  (57)| 00:00:10 |

|   1 |  SORT UNIQUE           |                  |   136K|  1732K|  2705K|   755  (57)| 00:00:10 |

|   2 |   UNION-ALL            |                  |       |       |       |            |          |

|   3 |    INDEX FAST FULL SCAN| IDX_T1_OBJECT_ID | 57994 |   736K|       |    49   (0)| 00:00:01 |

|   4 |    INDEX FAST FULL SCAN| IDX_T2_OBJECT_ID | 78456 |   996K|       |    49   (0)| 00:00:01 |

---------------------------------------------------------------------------------------------------

统计信息

----------------------------------------------------------

0  recursive calls

0  db block gets

340  consistent gets

0  physical reads

0  redo size

1062305  bytes sent via SQL*Net to client

54029  bytes received via SQL*Net from client

4876  SQL*Net roundtrips to/from client

1  sorts (memory)

0  sorts (disk)

73120  rows processed

--INDEX FULL SCAN的索引依然无法消除UNION排序

select /*+index(t1)*/ object_id from t1

union

select /*+index(t2)*/  object_id from t2;

执行计划

----------------------------------------------------------------------------------------------

| Id  | Operation         | Name             | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |

----------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |                  |   136K|  1732K|       |  1010  (56)| 00:00:13 |

|   1 |  SORT UNIQUE      |                  |   136K|  1732K|  2705K|  1010  (56)| 00:00:13 |

|   2 |   UNION-ALL       |                  |       |       |       |            |          |

|   3 |    INDEX FULL SCAN| IDX_T1_OBJECT_ID | 57994 |   736K|       |   177   (1)| 00:00:03 |

|   4 |    INDEX FULL SCAN| IDX_T2_OBJECT_ID | 78456 |   996K|       |   177   (1)| 00:00:03 |

----------------------------------------------------------------------------------------------

统计信息

----------------------------------------------------------

0  recursive calls

0  db block gets

326  consistent gets

0  physical reads

0  redo size

1062305  bytes sent via SQL*Net to client

54029  bytes received via SQL*Net from client

4876  SQL*Net roundtrips to/from client

1  sorts (memory)

0  sorts (disk)

73120  rows processed

--结论:索引无法消除UNION 排序,一般来说在使用UNION时要确定必要性,在数据不会重复时只需UNION ALL即可。

转载于:https://blog.51cto.com/2853725/1421652

索引系列八--索引特性之有序难优化union相关推荐

  1. MySQL索引系列--联合索引--使用/原理/优化

    原文网址:MySQL索引系列--联合索引--使用/原理/优化_IT利刃出鞘的博客-CSDN博客 简介         本文介绍MySQL的联合索引(也可以称为:组合索引.复合索引)的用法. MySQL ...

  2. MySQL索引系列:全文索引

    什么是全文索引? 全文索引首先是 MySQL 的一种索引类型,也是搜索引擎的关键技术. 试想在1M大小的文件中搜索一个词,可能需要几秒,在100M的文件中可能需要几十秒,如果在更大的文件中搜索那么就需 ...

  3. 互联网大厂面试,谈索引就直逼这些底层?难的是我不懂这些原理

    01 为啥BAT大厂,在数据库上都喜欢深入的问索引呢? 一线大厂,是很多人梦寐以求的盛典天堂.因为存在的无限的可能,可以帮你实现自己的远大抱负.大平台机会.视野.格局往往都比小厂多很多.但随之而来也是 ...

  4. 数据库性能系列之索引(中)

    GOOD NIGHT 前言 上一篇中,我们已经了解到了索引的基本概念和一些用法.那索引为什么会提升查询的速度,以及索引究竟是怎么工作的呢?也许大家心里还是有一些迷茫,这一切,还要从索引背后的算法说起. ...

  5. SQL Server 2008中SQL应用系列及BI学习笔记系列--目录索引 @邀月

    邀月 的数据库学习 http://www.cnblogs.com/downmoon/archive/2011/03/10/1980172.html SQL Server 2008中SQL应用系列及BI ...

  6. C语言笔记系列文章 索引目录表(持续更新中......)

    前言: 都快大三了,想起大一的时候学C语言,什么都不懂.由于对语言不是很了解,也就没有认真学习.其实C语言在计算机行业中还是比较重要的一门基础课程.虽然现在的开发基本不会用C,但它是母语这是毋庸置疑的 ...

  7. 步步为营VS 2008 + .NET 3.5系列文章索引

    介绍 步步为营VS 2008 + .NET 3.5系列文章索引:VS 2008新特性.C# 3.0新特性.LINQ查询操作符.DLINQ(LINQ to SQL).XLINQ(LINQ to XML) ...

  8. SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)

    SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行) 原文:SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行) 前言 本篇继续玩转模块 ...

  9. 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引

    [源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0  1.积少成 ...

最新文章

  1. [转]JS中判断鼠标按键判断
  2. IDEA快速生成构造器(构造函数)
  3. 深度优先搜索之图的表示方法
  4. 易语言客户端请求http_HTTP的重点问题
  5. 学习 尚硅谷-宋红康 Java基本语法(上): 变量与运算符
  6. 基于stm32智能车的设计(ucosiii)---北京之行
  7. css字体居中(css字体居中对齐)
  8. 【揭秘Wintel提升win 7系统性能的背后】
  9. 聊天机器人与自动问答技术
  10. java面试题学生表成绩表老师表_经典的SQL语句面试题
  11. 几种css炫酷背景欣赏
  12. 微信公众号页面开发记录
  13. 【5G核心网】free5GC UPF源码分析
  14. 最新数字藏品系统源码一套+价值9000缘
  15. win10连接虚拟机ftp服务器配置,win10虚拟机ftp服务器
  16. 软件资源免费下载网址
  17. 学习笔记STM32F429使用编码器测速HAL库版本
  18. 运放的信号增益和噪声增益
  19. IDEA卡在Downloading maven plugins的解决方法
  20. 绝地求生服务器维护9月19日,绝地求生9月19日维护到几点_绝地求生9月19日维护内容介绍_快吧单机游戏...

热门文章

  1. 淘宝李晓拴:淘宝网PHP电子商务应用
  2. 调用API弹出打印机属性对话框
  3. 在ASP.NET中跨页面实现多选
  4. GCC编译选项--创建与使用库
  5. 【Qt】通过QtCreator源码学习Qt(七):插件管理类简介
  6. linux驱动:i2c驱动(四)流程图之注册驱动
  7. cocos creator 安卓原生平台环境_竞技对抗小游戏单挑篮球开发历程 | Cocos技术派第12期...
  8. shell python优势_python的优势
  9. python试题for循环布尔值_Python自我修炼(升仙中....整数,布尔值,字符串,for循环)
  10. echarts的词云图表类型有哪些_词云图的几种制作方法评测,你pick哪款