理解v$sql的exact_matching_signature与force_matching_signature
理解v$sql的exact_matching_signature与force_matching_signature
对SQL语句,去掉重复的空格(不包括字符常量),将大小写转换成相同,比如均为大写(不包括字符常量)后,如果SQL相同,那么SQL语句的exact_matching_signature就是相同的。
select /*+ findme */ name from t01 where id=;
select /*+ findme1 */ name from t01 where id=;
select /*+ findme */ Name from t01 where id=;
SELECT /*+ findme */ nAme FROM t01 WHERE id=;
SELECT /*+ Findme */ nAme FROM t01 WHERE id=;
SELECT /*+ Findme test */ nAme FROM t01 WHERE id=;
SELECT /*+ full(t01) Findme */ nAme FROM t01 WHERE id=;
SELECT /*+ index(t01) Findme */ nAme FROM t01 WHERE id=; SQL> create table t01(id number,name varchar2());
SQL> insert into t01 values(,'bb01');
SQL> insert into t01 values(,'bb02');
SQL> insert into t01 values(,'bb03');
SQL> insert into t01 values(,'bb04');
SQL> insert into t01 values(,'bb05'); SQL> select /*+ findme */ name from t01 where id=;
SQL> select /*+ findme1 */ name from t01 where id=;
SQL> select /*+ findme */ Name from t01 where id=;
SQL> SELECT /*+ findme */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ Findme */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ Findme test */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ full(t01) Findme */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ index(t01) Findme */ nAme FROM t01 WHERE id=;
SQL> select sql_text,force_matching_signature,exact_matching_signature from v$sql where lower(sql_text) like '%/*%findme%' and sql_text not like '%v$sql%';
SQL_TEXT FORCE_MATCHING_SIGNATURE EXACT_MATCHING_SIGNATURE
-------------------------------------------------------------------------------- ------------------------ ------------------------
select /*+ findme */ Name from t01 where id= 2.61638783165569E18 1.81667648323122E19
select /*+ findme1 */ name from t01 where id= 1.48618482593165E19 3.84294405114677E18
select /*+ findme */ name from t01 where id= 2.61638783165569E18 1.81667648323122E19
SELECT /*+ index(t01) Findme */ nAme FROM t01 WHERE id= 8.64347201076369E18 1.06927716956949E19
SELECT /*+ full(t01) Findme */ nAme FROM t01 WHERE id= 3.77473736948433E18 2.01226189844612E18
SELECT /*+ Findme */ nAme FROM t01 WHERE id= 2.61638783165569E18 1.81667648323122E19
SELECT /*+ findme */ nAme FROM t01 WHERE id= 2.61638783165569E18 1.81667648323122E19
SELECT /*+ Findme test */ nAme FROM t01 WHERE id= 1.31270739882141E19 1.18833249442956E19
rows selected SQL> alter session set cursor_sharing=force;
SQL> alter system flush shared_pool;
SQL> select /*+ findme */ name from t01 where id=;
SQL> select /*+ findme1 */ name from t01 where id=;
SQL> select /*+ findme */ Name from t01 where id=;
SQL> SELECT /*+ findme */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ Findme */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ Findme test */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ full(t01) Findme */ nAme FROM t01 WHERE id=;
SQL> SELECT /*+ index(t01) Findme */ nAme FROM t01 WHERE id=;
SQL> select sql_text,force_matching_signature,exact_matching_signature from v$sql where lower(sql_text) like '%/*%findme%' and sql_text not like '%v$sql%';
SQL_TEXT FORCE_MATCHING_SIGNATURE EXACT_MATCHING_SIGNATURE
-------------------------------------------------------------------------------- ------------------------ ------------------------
select /*+ findme1 */ name from t01 where id=:"SYS_B_0" 1.48618482593165E19 1.48618482593165E19
select /*+ findme */ Name from t01 where id=:"SYS_B_0" 2.61638783165569E18 2.61638783165569E18
select /*+ findme */ name from t01 where id=:"SYS_B_0" 2.61638783165569E18 2.61638783165569E18
SELECT /*+ index(t01) Findme */ nAme FROM t01 WHERE id=:"SYS_B_0" 8.64347201076369E18 8.64347201076369E18
SELECT /*+ Findme test */ nAme FROM t01 WHERE id=:"SYS_B_0" 1.31270739882141E19 1.31270739882141E19
SELECT /*+ Findme */ nAme FROM t01 WHERE id=:"SYS_B_0" 2.61638783165569E18 2.61638783165569E18
SELECT /*+ full(t01) Findme */ nAme FROM t01 WHERE id=:"SYS_B_0" 3.77473736948433E18 3.77473736948433E18
SELECT /*+ findme */ nAme FROM t01 WHERE id=:"SYS_B_0" 2.61638783165569E18 2.61638783165569E18
rows selected SQL>
理解v$sql的exact_matching_signature与force_matching_signature的更多相关文章
- 以初学者的角度理解:SQL实现关系除法
以初学者的角度理解:SQL实现关系除法 相信各位在学习SQL的时候,由于没有一家SQL语言提供除法命令而只能自己写一个.而网上大多就是四步骤加一个模板: select distinct A.X fro ...
- SQL Server-聚焦深入理解动态SQL查询(三十二)
前言 之前有园友一直关注着我快点出SQL Server性能优化系列,博主我也对性能优化系列也有点小期待,本来打算利用周末写死锁以及避免死锁系列的接着进入SQL Server优化系列,但是在工作中长时间 ...
- Flask关于请求表单的粗浅应用及理解+简单SQL语句温习
1.请求表单 请求表单的知识点是flask数据请求中很小的一部分,首先要了解一下GET和POST请求:http://www.w3school.com.cn/tags/html_ref_httpmeth ...
- 快速理解 Phoenix : SQL on HBASE
转自:http://blog.csdn.net/colorant/article/details/8645081 ==是什么 == 目标Scope EasyStandard SQL access on ...
- 0708关于理解mysql SQL执行顺序
转自 http://www.jellythink.com/archives/924,博客比价清晰 我理解上文的是SQL执行顺序 总体方案.当你加入索引了以后,其实他的执行计划是有细微的变化,比方说刚开 ...
- mysql中难以理解的sql
工作中遇到这样的例子, CASE type WHEN 1 THEN '普通红包' WHEN 2 THEN '普通礼包加油卡' WHEN 3 THEN '优 惠码兑换加油卡' WHEN 4 THEN ' ...
- 理解Spark SQL(一)—— CLI和ThriftServer
Spark SQL主要提供了两个工具来访问hive中的数据,即CLI和ThriftServer.前提是需要Spark支持Hive,即编译Spark时需要带上hive和hive-thriftserver ...
- 理解Spark SQL(二)—— SQLContext和HiveContext
使用Spark SQL,除了使用之前介绍的方法,实际上还可以使用SQLContext或者HiveContext通过编程的方式实现.前者支持SQL语法解析器(SQL-92语法),后者支持SQL语法解析器 ...
- 理解Spark SQL(三)—— Spark SQL程序举例
上一篇说到,在Spark 2.x当中,实际上SQLContext和HiveContext是过时的,相反是采用SparkSession对象的sql函数来操作SQL语句的.使用这个函数执行SQL语句前需要 ...
随机推荐
- Rails--bundle exec rake db:migrate
--新建表: def up create_table :[TABLE_NAME] do |t| t.column :[NUM], :integer t.column :[NAME], :string ...
- 初步理解Java的三大特性——封装、继承和多态
声明:整理自网络,如有雷同,请联系博主处理 一.封装 封装从字面上来理解就是包装的意思,专业点就是信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被 ...
- Java笔试面试题二(常考问答)转
1.说出ArrayList,Vector, LinkedList的存储性能和特性 ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允 ...
- 利用js轻松实现页面简繁体转换
使用方法:StranBody(); //转换对象,使用递归,逐层剥到文本 function StranBody(fobj) { if(typeof(fobj)=="object") ...
- what a fuck postgre update sql
================= what a fuck postgre update sql ================= UPDATE temp_group_temp set group_ ...
- Java中instanceof用法
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...
- Mysql 只导出数据,不包含表结构
mysqldump -u${user} -p${passwd} --no-create-info --database ${dbname} --table ${tablename} > ${ta ...
- POI简易帮助文档系列--给Excel设置样式
正如Html需要CSS一样,我们的POI生成的Excel同样需要样式才能更完美的表现我们的数据.下面还是从简单的例子出发,学习和了解POI的样式设计. 一.我的位置. package com.myja ...
- 20145211《Java程序设计》第5周学习总结——独上高楼,望尽天涯路
教材学习内容总结 异常处理 JAVA异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.异常就是出现在运行时出现不正常 ...
- 基于 backbone的弹窗插件
define(['backbone', 'jquery', 'text!creditCardTpl/page.html'], function (bacobone, jquery, dialog_tp ...