共有两张表t1,t2

t1的表结构

t2的表结构

t1和t2通过

insert into t1 values ('www','aaa','bbb');

insert into t1 values ('www1','aaa1','bbb1');

insert into t1 values ('www2','aaa2','bbb2');

insert into t1 values ('www3','aaa3','bbb3');

t2同理构建

insert into t1 select * from t1;

insert into t2 select * from t2;

构建数据共:

t1共262144行

t2共524288行

为保证查询测试准确(不受缓存结果的影响)

在执行下一次查询前都会执行以下语句

ALTER SYSTEM FLUSH SHARED_POOL (清空语句,执行计划缓存)

ALTER SYSTEM FLUSH  BUFFER_CACHE (清空数据缓存)

select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www';

select t1.a1,t2.a1 from t1 join t2 using(a3) where t2.a1='www';

我们先用

select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www';

测试

explain plan for select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www';

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

1、不建任何索引

t1,t2都是全表扫描

2、在t2.a1建索

看查询结果

t1全表扫描,t2范围索引扫描

3、在t2.a1和t1.a3建非唯一索引

4、在t2.a1,t2.a3和t1.a3建非唯一索引

5,在t1.a1,t1.a3建立组合索引,在t2.a3建非唯一索引

select t1.a1,t2.a1 from t1,t2 where t1.a3=t2.a3 and t2.a1='www';

6、在t1,t2的a1和t3列建立组合索引

根据索引的类型与where限制条件的不同,有4种类型的索引扫描:

索引唯一扫描(index unique scan)

索引范围扫描(index range scan)

索引全扫描(index full scan)

索引快速扫描(index fast full scan)

后续逐步完善测试结果!

转载于:https://blog.51cto.com/9756063/1604099

oracle单列索引和组合索引性能测试相关推荐

  1. oracle 主键_mysql 组合索引带主键ID的问题

    场景: mysql 5.7 某表 t_apply_info 上的2个索引,一个组合索引带了 主键字段 ID,另一个是同字段的单列索引 例如: KEY idx_1 (apply_serial_no,id ...

  2. mysql 组合索引 or_mysql索引优化实例(单列索引与组合索引)

    索引一般用于在数据规模大时对查询进行优化的一种机制,对于一般的查询来说,mysql会去遍历整个表,来查询符合要求的结果: 如果借助于mysql索引,mysql会将要索引的字段按照一定的算法进行处理,并 ...

  3. MySQL单列索引和组合索引的创建及区别介绍

    MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能有很多人还不是十分的了解,下面就为您分析两者的主要区别,供您参考学习. 为了形象地对比两者,再建一个表 ...

  4. mysql 组合索引 or_Mysql_组合索引和单列索引

    一.目标 什么时候使用组合索引,什么时候使用单独索引 组合索引.单独索引区别 组合索引:最左前缀匹配原则 二.前期数据准备 1. 建表 CREATE TABLE `user` ( `uid`int(1 ...

  5. mysql 组合主键索引_mysql 组合索引带主键ID的问题

    场景: mysql 5.7 某表 t_apply_info 上的2个索引,一个组合索引带了 主键字段 ID,另一个是同字段的单列索引 例如: KEY idx_1 (apply_serial_no,id ...

  6. 索引利弊,如何创建索引,单键索引还是组合索引

    ** 索引的利弊与如何判定,是否需要索引** 相信读者都知道索引能够极大地提高数据检索的效率,让Query 执行得更快,但是可能并不是每一位朋友都清楚索引在极大提高检索效率的同时,也给数据库带来了一些 ...

  7. mysql多列索引(组合索引)特点和使用场景

    mysql多列索引特点和使用场景 单列索引 查看sql的执行计划 索引合并 多列索引 再看sql的执行计划 多列索引的顺序 最左前缀 添加数据的脚本 首先创建一张表,有姓'first_name'.名' ...

  8. MySQL的索引(普通索引、唯一索引,主键索引、组合索引、全文索引、空间索引)相关操作

    目录 索引介绍 Hash索引和B+tree索引的区别 应用场景 索引分类 普通索引 创建单列索引--普通索引(3种语法) 查看数据库中的索引 查看数据表中的索引 删除索引 唯一索引 主键索引 组合索引 ...

  9. 【mysql】普通索引和组合索引(复合索引、联合索引) 最左原则

    文章目录 概述 普通索引 唯一索引 主键索引 组合索引 最左前缀 为什么要使用联合索引 概述 索引分单列索引和组合索引: 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引: ...

  10. mysql创建表对经常要查询的列添加索引或者组合索引

    创建表的时候对经常要查询的列添加索引或者组合索引 索引直接影响后面的查询性能,尤其是数据量越大的时候,影响越明显.作为一个从事DBA生涯超过5年的DBA,遇到过无数次由于没有添加索引,导致的线上故障, ...

最新文章

  1. The Report(连接查询)
  2. 图像处理之opencv图像特效大全
  3. tomcat端口冲突解决 Address already in use: JVM_Bind :8080
  4. Mysql远程登录及常用命令
  5. 删了自己写的代码?判刑10个月!
  6. html5 canvas 头像上传
  7. ie运行不了java脚本界面_IE浏览器不能运行js JS代码失效不能运行了如何解决
  8. 解决金蝶未检测到K/3许可文件,并且该账套已超过演示版期限问题
  9. 破解 Ashley Madison 1100万个口令
  10. 智能指针auto_ptr管理单例
  11. GDAL源码剖析(四)之命令行程序说明二
  12. 理解AOP思想(面向切面编程)
  13. 前端最佳实践(一)——DOM操作
  14. java 子类型_Java – 基类和子类中的equals方法
  15. xp php环境搭建 iis,Windows XP环境下快速配置IIS+PHP详细过程
  16. SpringCloud Nacos 【服务端】服务注册源码解析
  17. html5 堆栈不足,超简单!不用PS也能玩堆栈摄影
  18. 笔记本的结构深入分析
  19. linux 命令 curl 详解
  20. 使用透明数据加密(TDE)来保护数据库

热门文章

  1. 社会对IT 从业人员综合素质的需求
  2. Selenium 编写第一个自动化脚本
  3. 一次性杯子机器人挂件手工制作_变废为宝 ———环保笔筒制作
  4. JUnit5 @BeforeEach注解示例
  5. 软件测试模型-V模型
  6. mysql sql注入怎么获取数据_手把手教你通过SQL注入盗取数据库信息
  7. 将servlet[login]标记为不可用_30分钟上手OUTLOOK - 邮件标记
  8. python自动补全_Windows 下python的tab自动补全
  9. 正在迷茫的你,为什么不考虑这份工作呢?
  10. 凭什么程序员工资那么高?