理解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语句前需要 ...
随机推荐
- jQuery 图片剪裁插件使用之 imgAreaSelect
插件主页:http://odyniec.net/projects/imgareaselect/ 官方网站上说明支持的浏览器:The plugin works in all major browsers ...
- 关于Depth Bounds Test (DBT)和在CE3的运用
Depth Bounds Test (DBT) Depth Bounds Test(深度范围检测),是Nvdia GeForce 6系列以后显卡的特性(GPU Programming Guide Ge ...
- placeholder属性实现text标签默认值提示用户
<input type="text" class="searchTxt" id=this.id+"-searchTxt" placeh ...
- Oracle 语句常见错误
Merge into的注意点之ORA-30926:无法在源表中获得一组稳定的行? merge into 的内部处理是将table_source 的每一条记录和table_target的每一条记录对比匹 ...
- laravel 视图组件
假设有一个文件被多个视图需要,比如导航条: 1.在路由文件添加 View::composer('stats', function($view){ $view->with('stats', app ...
- poj1012约瑟夫
#include<stdio.h>int a[14];int f(int k,int m){ int n,i,s; n=2*k;s=0; for(i=0;i<k;i ...
- Spring IoC反转控制的快速入门
* 下载Spring最新开发包 * 复制Spring开发jar包到工程 * 理解IoC反转控制和DI依赖注入 * 编写Spring核心配置文件 * 在程序中读取Spring配置文件,通过Spring框 ...
- App之百度云推送
集成SDK 下载最新的Android SDK压缩包并解压,在新建工程或已有工程中增加百度云推送功能. 我下载的是 ,里面有一个同名的文件夹,文件夹中有 导入云推送jar包和so文件: 将解压后的lib ...
- ASP.NET网页生成EXCEL并下载(利用DataGrid或GridView等)
前几天要在后台查询数据库内容(用entity framework),将查询出来的信息(List或DataTable形式)转成EXCEL供用户下载.经过谷歌.百度搜索,终于搜出了一些代码.似乎可用了,结 ...
- Intersection of Two Linked Lists | LeetCode
利用两个栈,然后分别存储每一个链表. 继而,相继pop相同的节点. 有些细节需要注意,请看最后的返回值是如何处理的. /** * Definition for singly-linked list. ...