Oracle执行计划——all_rows和first_rows(n) 优化器模式
0. 环境创建
SQL> create usertest identified by test 2 default tablespace users 3 temporary tablespace temp 4 quota unlimited on users; User created. SQL> grant createsession, resource, alter session to test; Grant succeeded. SQL> conntest/test; Connected. SQL> create tableemp(id number, name varchar2(10)); Table created. SQL> insert intoemp values(100, 'tom'); 1 row created. SQL> insert intoemp values(200, 'mike'); 1 row created. SQL> insert intoemp values(300, 'jack'); 1 row created. SQL> insert intoemp values(400, 'rose'); 1 row created. SQL> commit; Commit complete.
1. 数据少时的情况
1.1 FIRST_ROWS_10
SQL> setautotrace traceonly; SQL> executedbms_stats.gather_table_stats('TEST', 'emp', cascade=>true); PL/SQL proceduresuccessfully completed. SQL> altersession set optimizer_mode=first_rows_10; Session altered.
1.2 ALL_ROWS
SQL> alter sessionset optimizer_mode=all_rows; Session altered.
1.3 分析
通过上面的简单举例比较,我们可以看到,在表上没有索引,当数据量很少,并且值唯一的情况下,两种模式的表现是一样的
2. 数据少时的情况
SQL> create indexemp_idx on emp(name); Index created. SQL> setautotrace off SQL> insert intoemp select * from emp; 4 rows created. SQL> insert intoemp select * from emp; 8 rows created. SQL> / 16 rows created. SQL> / 32 rows created. SQL> / 64 rows created. SQL> / 128 rows created. SQL> / 256 rows created. SQL> / 512 rows created. SQL> / 1024 rows created. SQL> / 2048 rows created. SQL> / 4096 rows created. SQL> / 8192 rows created. SQL> / 16384 rows created. SQL> / 32768 rows created. SQL> commit; Commit complete. SQL> executedbms_stats.gather_table_stats('TEST', 'emp', cascade=>true); PL/SQL proceduresuccessfully completed.
2.1 FIRST_ROWS_10
SQL> setautotrace traceonly SQL> altersession set optimizer_mode=first_rows_10; Session altered.
2.2 ALL_ROWS
SQL> setautotrace traceonly SQL> altersession set optimizer_mode=all_rows; Session altered.
2.3 分析
我们看到fisrt_rows走了索引,这显然不是一种理想的结果,而all_rows走了全表扫描,我们可以看到成本明显更低。
Oracle执行计划——all_rows和first_rows(n) 优化器模式的更多相关文章
- Oracle数据库表索引失效,解决办法:修改Oracle数据库优化器模式
ALTER SYSTEM SET OPTIMIZER_MODE=RULE scope=both; 其他可以选择的模式还有ALL_ROWS/CHOOSE/FIRST_ROWS/ALL_ROWS. 应用系 ...
- 看懂Oracle执行计划
最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...
- 【摘】Oracle执行计划不走索引的原因总结
感谢原博主 http://soft.chinabyte.com/database/364/12471864.shtml 在Oracle数据库操作中,为什么有时一个表的某个字段明明有索引,当观察一些语的 ...
- [转]看懂Oracle执行计划
原文地址:https://www.cnblogs.com/Dreamer-1/p/6076440.html 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径 ...
- 看懂Oracle执行计划、表连接方式
看懂Oracle执行计划 原文:https://www.cnblogs.com/Dreamer-1/p/6076440.html 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也 ...
- 使用Oracle执行计划分析SQL性能
执行计划:一条查询语句在ORACLE中的执行过程或访问路径的描述.即就是对一个查询任务,做出一份怎样去完成任务的详细方案. 如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的 ...
- 02 看懂Oracle执行计划
看懂Oracle执行计划 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing… 一:什么是Oracle执行计划? 执行计划是一条查询语句在 ...
- oracle执行计划(转载)
转载自 https://www.cnblogs.com/Dreamer-1/p/6076440.html 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的 ...
- Oracle执行计划不走索引的原因总结
在Oracle数据库操作中,为什么有时一个表的某个字段明明有索引,当观察一些语的执行计划确不走索引呢?如何解决呢?本文我们主要就介绍这部分内容,接下来就让我们一起来了解一下. 不走索引大体有以下几个原 ...
随机推荐
- 转载:C# 之泛型详解
本文原地址:http://www.blogjava.net/Jack2007/archive/2008/05/05/198566.html.感谢博主分享! 什么是泛型 我们在编写程序时,经常遇到两个模 ...
- python中的generator, iterator, iterabel
先来看看如果遇到一个对象,如何判断其是否是这三种类型: from types import GeneratorType from collectiuons import Iterable, Itera ...
- log4net 生成多个空文件问题
使用 log4net 的伙伴,相信很多人会遇到我现在这个问题 ,一般项目需求,便于管理和查找原因,会让项目的日志文件分类记录,然而会出现很多空日志, 出现这个问题的原因通常是我们web.config配 ...
- 数据逆向传递 unwind segue
一.简介 unwind segue通过允许你定义一个控制器和其他控制器的关系来扩展segue的概念,这个“关系”先于顺传(流式控制)的方式.基于unwind segue可以实现导航相反的效果,即将界面 ...
- Linux 抓取网站命令
wget -m -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/200 ...
- cocoapods安装失败
ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the ...
- 重新开始学习javase_集合_List
一,List之ArrayList(转:http://blog.csdn.net/zheng0518/article/details/42198205) 1. ArrayList概述: ArrayLis ...
- 多个显示器, window.open的定位
// Pops a window relative to the current window position function popup(url, winName, xOffset, yOffs ...
- 安装mysql-python报错
运行: pip install mysql-python报错如下: Downloading/unpacking MYSQL-python Downloading MySQL-python-1.2.5. ...
- spring注解机制和XML配置机制之间的比较
XML配置的优缺点: 优点有:1. XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译.2. 在处理大的业务量的时候,用XML配置应该更加好一 ...