iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >sql查找未使用绑定变量的语句
  • 491
分享到

sql查找未使用绑定变量的语句

2024-04-02 19:04:59 491人浏览 独家记忆
摘要

本篇内容主要讲解“sql查找未使用绑定变量的语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sql查找未使用绑定变量的语句”吧!一、查找方法:从oracle1

本篇内容主要讲解“sql查找未使用绑定变量的语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sql查找未使用绑定变量的语句”吧!

一、查找方法:

oracle10G开始,V$SQL视图中增加列FORCE_MATCHING_SIGNATURESignature used when the CURSOR_SHARING parameter is set to FORCE;(当CURSOR_SHARING参数设置成FORCE时,产生的执行计划是一样的)

测试1:cursor_sharing值为EXACT

SQL>  show parameter cursor_sharing;

 

NAME                           TYPE           VALUE

------------------------------------ ----------- ---------------------

cursor_sharing                    string           EXACT

SQL>SELECT * from bas.john  where name='曹定芳';

 

SQL>SELECT * from bas.john  where name='张杰雄';

    

SQL>SELECT * from bas.john  where name='练为斌';

select sql_text,FORCE_MATCHING_SIGNATURE,EXACT_MATCHING_SIGNATURE from v$sql twhere sql_text like'%john%';

 

SQL_TEXT                                              FORCE_MATCHING_SIGNATURE     EXACT_MATCHING_SIGNATURE    

----------------------------------------------------   ---------------------      -----------------------------

SELECT * from bas.john  where name='曹定芳'    1.58728914732591E19         8.65016113461197E18

SELECT * from bas.john  where name='张杰雄'    1.58728914732591E19         1.55664749687513E19

SELECT * from bas.john  where name='练为斌'    1.58728914732591E19         6.34382341893161E18        

测试1说明:当name值不一样的时候FORCE_MATCHING_SIGNATURE的值相同,而EXACT_MATCHING_SIGNATURE值不同,说明在cursor_sharing=force时,执行计划可共用;cursor_sharing=exact时,执行计划不可共用;我们使用绑定变量后,同样也可以达到执行计划共用的效果;

测试2:cursor_sharing值为FORCE

1、执行语句:alter system set cursor_sharing=force;

SQL> alter system set cursor_sharing=force;

 

System altered.

 

SQL> show parameter cursor_sharing;

 

NAME                           TYPE          VALUE

---------------------------       ---------    -----------

cursor_sharing                 string          FORCE

 

SQL> alter system flush shared_pool;

 

System altered.

2、同样执行三条查询语句

SQL>SELECT * from bas.john  where name='曹定芳';

 

SQL>SELECT * from bas.john  where name='张杰雄';

 

SQL>SELECT * from bas.john  where name='练为斌';

3、查找V$SQL的语句情况

select sql_text,FORCE_MATCHING_SIGNATURE,EXACT_MATCHING_SIGNATURE from v$sql t where sql_text like '%john%';

SQL_TEXT                                              FORCE_MATCHING_SIGNATURE     EXACT_MATCHING_SIGNATURE    

----------------------------------------------------   ---------------------      -----------------------------

SELECT * from bas.john  where name=:"SYS_B_0"    1.58728914732591E19         1.58728914732591E19      

测试2说明:当我们把cursor_sharing设置为force后,发现语句执行计划共用了,并且自动使用绑定变量(此时v$sql视图中只查询到一条与之相关的语句)。

测试3、cursor_sharing值为EXACT,但使用绑定变量

1、执行语句:alter system set cursor_sharing=EXACT;

SQL> alter system set cursor_sharing=force;

 

System altered.

 

SQL> show parameter cursor_sharing;

 

NAME                           TYPE          VALUE

---------------------------       ---------    -----------

cursor_sharing                 string          EXACT

 

SQL> alter system flush shared_pool;

 

System altered.

2、使用绑定变量查询

SQL>SELECT * from bas.john  where name=:a;    

3、查找V$SQL的语句情况

select sql_text,FORCE_MATCHING_SIGNATURE,EXACT_MATCHING_SIGNATURE from v$sql twhere sql_text like'%john%';

 

SQL_TEXT                                              FORCE_MATCHING_SIGNATURE     EXACT_MATCHING_SIGNATURE    

----------------------------------------------------   ---------------------      -----------------------------

SELECT * from bas.john  where name=:a           1.4513622515145E19        1.4513622515145E19

测试3总结:当我们把cursor_sharing设置为EXACT后,并通过绑定变量查询,发现语句执行计划共用了;

二、解决方法

通过以上测试已经了解:如果V$SQL里面的FORCE_MATCHING_SIGNATURE值一样的SQL语句,那么就可以通过绑定变量来进行相应的优化了。

select to_char(FORCE_MATCHING_SIGNATURE) as FORCE_MATCHING_SIGNATURE, count(1) as counts

from v$sql

where FORCE_MATCHING_SIGNATURE>0 and FORCE_MATCHING_SIGNATURE <> EXACT_MATCHING_SIGNATURE

group by FORCE_MATCHING_SIGNATURE

having count(1) > &a

order by 2 desc;

到此,相信大家对“sql查找未使用绑定变量的语句”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: sql查找未使用绑定变量的语句

本文链接: https://www.lsjlt.com/news/60432.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql查找未使用绑定变量的语句
    本篇内容主要讲解“sql查找未使用绑定变量的语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sql查找未使用绑定变量的语句”吧!一、查找方法:从ORACLE1...
    99+
    2024-04-02
  • oracle如何查找一段时间内的非绑定变量sql
    这篇文章主要介绍了oracle如何查找一段时间内的非绑定变量sql,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。查找一段时间内的非绑定变量s...
    99+
    2024-04-02
  • SQL Developer中如何使用绑定变量
    这篇文章将为大家详细讲解有关SQL Developer中如何使用绑定变量,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 Toad是个强大的工...
    99+
    2024-04-02
  • SQLServer在T-SQL语句中使用变量
    变量的种类 在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable) 全局变量是由系统定义的,在整个SQL Serv...
    99+
    2024-04-02
  • SQL Server在T-SQL语句中怎么使用变量
    这篇文章主要介绍了SQL Server在T-SQL语句中怎么使用变量的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL Server在T-SQL语句中怎么使用变量文章都会有所收获,下面我们...
    99+
    2023-06-30
  • sql中如何通过v$sql_bind_capture查看绑定变量
    这篇文章将为大家详细讲解有关sql中如何通过v$sql_bind_capture查看绑定变量,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。最近在排查CRMG性能SQL的过程中,大量的SQL需要确定绑定变量...
    99+
    2023-06-06
  • 利用FORCE_MATCHING_SIGNATURE捕获非绑定变量SQL
    sql text 相近的sql FORCE_MATCHING_SIGNATURE 相同 因此可以使用下面的语句查找没有绑定变量的SQL SELECT *  &...
    99+
    2024-04-02
  • 怎么用sql语句给变量赋值
    在SQL中,可以使用SET语句来给变量赋值。具体语法如下: SET @变量名 = 值; 例如,如果你想给变量@myVariable赋...
    99+
    2023-10-23
    sql
  • 怎么使用ORACLE中的绑定变量
    这篇文章主要讲解了“怎么使用ORACLE中的绑定变量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用ORACLE中的绑定变量”吧!一、绑定变量的作用:...
    99+
    2024-04-02
  • PL/SQL的绑定变量是什么意思
    PL/SQL的绑定变量是在SQL语句中使用冒号(:)来引用的变量,这些变量在执行SQL语句时由应用程序或用户提供。绑定变量可以在SQ...
    99+
    2024-05-07
    PL/SQL
  • sql查询语句的使用示例
    了解sql查询语句的使用示例?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!sql查询语句:1、查看表结构【SQL>D...
    99+
    2024-04-02
  • MyBatis的映射器接口与SQL语句绑定
    MyBatis的映射器接口与SQL语句绑定是通过在映射器接口中定义抽象方法,并在映射器配置文件中配置与这些抽象方法对应的SQL语句来...
    99+
    2024-05-08
    MyBatis
  • mysql怎么查找效率低的SQL语句
    本篇内容主要讲解“mysql怎么查找效率低的SQL语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql怎么查找效率低的SQL语句”吧!MySQL通过慢查询日志定位那些执行效率较低的SQL...
    99+
    2023-06-01
  • ORACLE中怎么找到未提交事务的SQL语句
    这篇文章主要介绍了ORACLE中怎么找到未提交事务的SQL语句,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在Oracle数据库中,我们能否...
    99+
    2024-04-02
  • 使用LamQuerWapper自定义SQL语句
    项目中需要实现自定义的查询,但是仍然想用QueryWrapper对象里面的那些查询。 案例一(java代码) LambdaQueryWrapper queryWrapper = new QueryWrapper() ...
    99+
    2023-10-09
    java mybatis
  • plsql怎么执行带变量的sql语句
    在PL/SQL中,可以使用EXECUTE IMMEDIATE语句执行带变量的SQL语句。以下是一个示例: DECLARE sql...
    99+
    2023-10-23
    plsql sql
  • SQL*Plus中怎么利用DATE类型绑定变量
    这篇文章将为大家详细讲解有关SQL*Plus中怎么利用DATE类型绑定变量,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 SQ...
    99+
    2024-04-02
  • 在mysql如何查找效率慢的SQL语句
    这篇文章主要介绍在mysql如何查找效率慢的SQL语句,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句1,slow_...
    99+
    2024-04-02
  • java中查找insert语句怎么使用
    在Java中,可以使用JDBC(Java Database Connectivity)来执行SQL语句,包括insert语句。以下是...
    99+
    2023-09-07
    java
  • 如何找出Mysql查询速度慢的SQL语句
    小编给大家分享一下如何找出Mysql查询速度慢的SQL语句,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!启动Mysql时加参数-...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作