添加索引后SQL消耗量在执行计划中的变化
不同索引的执行效率也是不一样的,下面比较三条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消耗量在执行计划中的变化的更多相关文章
- SQL Server实际执行计划COST"欺骗"案例
有个系统,昨天Support人员发布了相关升级脚本后,今天发现系统中有个功能不能正常使用了,直接报超时了(Timeout expired)的错误.定位到相关相关存储过程后,然后在优化分析的过程中,又遇 ...
- 程序员眼中的 SQL Server-执行计划教会我如何创建索引?
先说点废话 以前有 DBA 在身边的时候,从来不曾考虑过数据库性能的问题,但是,当一个应用程序从头到脚都由自己完成,而且数据库面对的是接近百万的数据,看着一个页面加载速度像乌龟一样,自己心里真是有种挫 ...
- SQL Server-执行计划教会我如何创建索引
先说点废话 以前有 DBA 在身边的时候,从来不曾考虑过数据库性能的问题,但是,当一个应用程序从头到脚都由自己完成,而且数据库面对的是接近百万的数据,看着一个页面加载速度像乌龟一样,自己心里真是有种挫 ...
- 浅析SQL SERVER执行计划中的各类怪相
在查看执行计划或调优过程中,执行计划里面有些现象总会让人有些疑惑不解: 1:为什么同一条SQL语句有时候会走索引查找,有时候SQL脚本又不走索引查找,反而走全表扫描? 2:同一条SQL语句,查询条件的 ...
- 第二百八十八节,MySQL数据库-索引、limit分页、执行计划、慢日志查询
MySQL数据库-索引.limit分页.执行计划.慢日志查询 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获 ...
- MySQL---正确使用索引、limit分页、执行计划、慢日志查询
正确使用索引 数据库表中添加索引后确实会让查询速度起飞,但前提必须是正确的使用索引来查询,如果以错误的方式使用,则即使建立索引也会不奏效.即使建立索引,索引也不会生效: - like '%xx' se ...
- SQL Server 优化-执行计划
对于SQL Server的优化来说,优化查询可能是很常见的事情.由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Server查询计划.毕竟我对SQL Ser ...
- 【MS SQL】通过执行计划来分析SQL性能
原文:[MS SQL]通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1.通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO O ...
- 官方文档:11G新特性SQL PLAN BASLINE 执行计划基线
什么是SQL执行计划管理? SQL计划管理(SQL plan management)是一咱预防机制,记录和评估SQL语句的执行计划.SQL plan management的主要功能是sql plan ...
- 了解Sql Server的执行计划
前一篇总结了Sql Server Profiler,它主要用来监控数据库,并跟踪生成的sql语句.但是只拿到生成的sql语句没有什么用,我们可以利用这些sql语句,然后结合执行计划来分析sql语句的性 ...
随机推荐
- 第一个Java程序(自动关机程序)
我的第一个程序 1.新建java工程 打开Eclipse,点击File,选择New,点击Java Project ,新建名为demo的工程,如图所示: 2.编写程序 1.打开demo工程,鼠标右键sr ...
- python 实现视频流下载保存MP4
# -*- coding:utf-8 -*-import sysimport osfrom glob import globimport requests reload(sys)sys.setdefa ...
- android 下载安装包更新app
1下载 public void download(String url) { Utils.Loge("download",url); Uri uri = Uri.parse(url ...
- 服务器安装node
卸载步骤[未安装请忽略] 1.卸载npm sudo npm uninstall npm -g 2.卸载node yum remove nodejs npm -y 安装步骤 1.下载 wget http ...
- 含字母数字的字符串排序算法,仿Windows文件名排序算法
不废话,上排序前后对比: 类似与windows的目录文件排序,分几种版本C++/C#/JAVA给大家: 1.Java版 package com.eam.util;/* * The Alphanum A ...
- 实验3 C语言分支语句和循环语句编程应用
任务一 #include<math.h> #include<stdio.h> int main() { float a,b,c,x1,x2; float delta,real, ...
- C++ 几款IDE和编程平台的选择分析
最近闲来无事,就研究了一下几个编程平台和IDE.首先,我必须强调一下,这些方案研究并不一定适用于商业公司内部编程平台选择,而是给个人学习或者闲暇之余把玩用的.主要从以下几个指标考量:使用体验.跨平台. ...
- 三艾云 Kubernetes 集群最佳实践
三艾云 Kubernetes 集群最佳实践 三艾云 Kubernetes 集群最佳实践 容器是 Cloud Native 的基石,它们之间的关系不言而喻.了解容器对于学习 Cloud Native 也 ...
- C#重点语法——反射
------------恢复内容开始------------ 一.含义 反射是指访问,检测或修改程序代码本身状态或行为的一种技术. 举例: 官方代码继承了IReflect ------------恢复 ...
- python 中倒是什么事可哈希的意思那?
可哈希对象 python中的hashable(可哈希的)是什么意思 2018年12月29日 23:29:36 shangyj17 阅读数:511 不严谨但易懂的解释: 一个对象在其生命周期内,如果 ...