不同索引的执行效率也是不一样的,下面比较三条SQL语句在正常查询与建立普通索引与位图索引后的CPU消耗量的变化,目的为了是加强对索引的理解与运用

实验步骤:

1、创建有特点的大数据表。
为了保证索引产生前后,查询效果的正确比对,应建立一个存在大量数据的测试表。这个测试表的数据来源于SYS模式下的all_objects视图,其中包括本数据库实例中的全部对象的基本描述,具体包括对象的所有者、对象名称、创建日期等信息。
创建测试表的具体过程:

创建大数据表,sys用户下的all_objects表就比较适合做查询用,把该表创建在scott用户下,可以先确定scott用户是否是解锁的

SQL>  CREATE TABLE scott.DemoTable as

SQL>  SELECT * FROM all_objects

 SQL>  WHERE owner IN ('SYS','PUBLIC','SCOTT');

这里需要注意的是如果where后面的条件不成立的话,只会复制表结构,可以另外添加一下数据

SQL> insert into scott.demotable select * from sys.all_objects;

85029 rows created.

2.查询创建好的demotable的基本情况,连接scott用户

Desc scott.demotable

SQL> insert into scott.demotable select * from sys.all_objects;

SQL> select count(distinct owner),

2  count(distinct object_type),

3  count(distinct object_name)

4  from demotable;

3、分析表,开启追踪   这里的意思是打开执行计划,执行计划的查看方式有很多种。
analyze table demoTable compute statistics;
set autotrace trace explain  --开启追踪
注意:关闭追踪的方法为  set autotrace off;

开启追踪

SQL> analyze table demotable compute statistics;

Table analyzed.

SQL> set autotrace trace explain;

查看EMP的信息,

SQL> select * from demotable where object_name = 'EMP';

SQL> select * from demotable where owner='SCOTT';

Scott用户cpu在342,所占279K

SQL> SELECT count(*) FROM demoTable where owner ='SCOTT';

基于owner字段做实验建立建立索引

SQL> CREATE INDEX idx_owner ON demoTable(owner);

Index created.

SQL> SELECT * FROM demoTable where object_name = 'EMP';

SQL> SELECT * FROM demoTable where owner ='SCOTT';

SELECT count(*) FROM demoTable where owner ='SCOTT';

4、创建位图索引,查看位图索引与普通索引,或者不建立索引带来的变化

--删除原有owner索引
    DROP INDEX idx_owner;

SQL> CREATE BITMAP INDEX idx_owner_bitmap ON demoTable(owner);

Index created.

SQL> SELECT * FROM demoTable where object_name = 'EMP';

SQL> SELECT * FROM demoTable where owner ='SCOTT';

SELECT count(*) FROM demoTable where owner ='SCOTT';

添加索引后SQL消耗量在执行计划中的变化的更多相关文章

  1. SQL Server实际执行计划COST"欺骗"案例

    有个系统,昨天Support人员发布了相关升级脚本后,今天发现系统中有个功能不能正常使用了,直接报超时了(Timeout expired)的错误.定位到相关相关存储过程后,然后在优化分析的过程中,又遇 ...

  2. 程序员眼中的 SQL Server-执行计划教会我如何创建索引?

    先说点废话 以前有 DBA 在身边的时候,从来不曾考虑过数据库性能的问题,但是,当一个应用程序从头到脚都由自己完成,而且数据库面对的是接近百万的数据,看着一个页面加载速度像乌龟一样,自己心里真是有种挫 ...

  3. SQL Server-执行计划教会我如何创建索引

    先说点废话 以前有 DBA 在身边的时候,从来不曾考虑过数据库性能的问题,但是,当一个应用程序从头到脚都由自己完成,而且数据库面对的是接近百万的数据,看着一个页面加载速度像乌龟一样,自己心里真是有种挫 ...

  4. 浅析SQL SERVER执行计划中的各类怪相

    在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的 ...

  5. 第二百八十八节,MySQL数据库-索引、limit分页、执行计划、慢日志查询

    MySQL数据库-索引.limit分页.执行计划.慢日志查询 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获 ...

  6. MySQL---正确使用索引、limit分页、执行计划、慢日志查询

    正确使用索引 数据库表中添加索引后确实会让查询速度起飞,但前提必须是正确的使用索引来查询,如果以错误的方式使用,则即使建立索引也会不奏效.即使建立索引,索引也不会生效: - like '%xx' se ...

  7. SQL Server 优化-执行计划

    对于SQL Server的优化来说,优化查询可能是很常见的事情.由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Server查询计划.毕竟我对SQL Ser ...

  8. 【MS SQL】通过执行计划来分析SQL性能

    原文:[MS SQL]通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO O ...

  9. 官方文档:11G新特性SQL PLAN BASLINE 执行计划基线

    什么是SQL执行计划管理? SQL计划管理(SQL plan management)是一咱预防机制,记录和评估SQL语句的执行计划.SQL plan management的主要功能是sql plan ...

  10. 了解Sql Server的执行计划

    前一篇总结了Sql Server Profiler,它主要用来监控数据库,并跟踪生成的sql语句.但是只拿到生成的sql语句没有什么用,我们可以利用这些sql语句,然后结合执行计划来分析sql语句的性 ...

随机推荐

  1. 3-1 熟悉Hadoop及其操作

    Hadoop最早起源于Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题--如何解决数十亿网页的存储和索引 ...

  2. egret tween 屏幕震动动画 ts

    let orig = { x: this.x, y: this.y }; var dir = 1; var tox = 0; var toy = 0; var count = 40; // if (n ...

  3. Blog作业02

    目录 前言 设计与分析 踩坑心得 改进建议 总结 前言 这三次作业的题目数量虽然增多,但是在题量加大的同时,这三次作业集的难度也相应的下去了,难度降低的同时也保证了作业集题目的质量.这三次的作业的知识 ...

  4. ubuntu16.04+win10双系统安装

    先下载Ubuntu到电脑:http://mirrors.ustc.edu.cn/ubuntu-releases/16.04.6/ubuntu-16.04.6-desktop-amd64.iso 准备个 ...

  5. Unity UI布局与适配

    目录 Canvas(画布) Basic Layout(基础布局) 实例 1.画布(Canvas) 画布是所有UI元素的父物体,任何UI元素都存在于画布之上.画布上所有UI元素的绘制顺序是根据其在场景中 ...

  6. Windows10电源选项:睡眠、休眠、启用快速启动

    参考链接: http://www.dnpz.net/diannaozhishi/2223.html http://www.cfan.com.cn/2018/0118/130151.shtml 在介绍w ...

  7. 微信小程序-实现微信登录

    业务流程: 1:首先需要一个按钮触发事件 2:调用微信小程序的登录接口wx.login,拿到code 3:调用微信小程序的获取用户信息的接口wx.getUserProfile,拿到用户的个人信息 4: ...

  8. centos7开放8080端口

    1. firewall-cmd --state  :令防火墙处于开启状态 systemctl start firewalld.service: 2. firewall-cmd --zone=publi ...

  9. 调用搜狐js接口获取客户端IP及省分城市

    <!-- 引入,搜狐IP地址查询接口(默认GBK) --> <!-- <script src="http://pv.sohu.com/cityjson"&g ...

  10. vue2+element表格拖拽

    1.定义好拖拽元素 ref标识,以及 row-key="id"  (row-key拖拽标识,拖拽后数据不会乱, id为tableDataNew数据对象id) 2.下载cnpm in ...