理解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语句前需要 ...
随机推荐
- pox目录中的交换机mac地址学习模块 l2_multi源码
# Copyright 2012-2013 James McCauley # # Licensed under the Apache License, Version 2.0 (the "L ...
- 【翻译】CEDEC2012 SQUARE ENIX GPGPU实现高速GI烘培工具的方法
虽然实时GI技术已经趋于成熟了,但出于对不同平台的性能和质量的考虑, 更倾向搭配一些预计算的渲染技术来实现,如给静态物体提供GI的LightMap, 给动态物体提供GI的Irradiance Vol ...
- Front-end Developer Interview Questions
Front-end-Developer-Interview-Questions A list of helpful front-end related questions you can use to ...
- MVC设计模式
随着Web应用的商业逻辑包含逐渐复杂的公式分析计算.决策支持等,使客户机越 来越不堪重负,因此将系统的商业分离出来.单独形成一部分,这样三层结构产生了. 其中‘层’是逻辑上的划分. 三层体系结构是将整 ...
- 让Storm插上CEP的翅膀 - Siddhi调研和集成
什么是 Siddhi? Siddhi 是一种 lightweight, easy-to-use, open source CEP(Complex Event Processing)引擎,由wso2公司 ...
- BLE Device Monitor
发现 这东西基本是新工具,依赖CC2540 USB Dongle串口来运作 它能做很多事情,扫描设备,研究设备 经验 监控设备躲在这里 官方获得 跑道CC2541页面里去 http://www.ti. ...
- Python基本数据类型之list列表
列表是python中用的非常频繁的数据结构,它是有序序列.之前学的字符串就是一种有序序列.不过列表是可变的. 创建列表 li = list( ) #构 ...
- C# 字符串的截取和替换
1.取字符串的前n个字符 (1)string str1=str.Substring(0,n); (2)string str1=str.Remove(i,str.Length-n); 2.去掉字符串的前 ...
- Anacodna之conda与 virtualenv对比使用教程,创建虚拟环境
conda创建虚拟环境 1.查看包 conda list查看安装了哪些包 conda env list查看有哪些虚拟环境 conda -V查看conda的版本 2.创建虚拟环境,命名为myflaska ...
- How To Set Up Apache with a Free Signed SSL Certificate on a VPS
Prerequisites Before we get started, here are the web tools you need for this tutorial: Google Chrom ...