其神若何,月射寒江。

白盒测试之静态检查--sql检测器检查存在is null、is not null的语句

上一篇 / 下一篇  2010-04-15 09:53:07 / 个人分类:白盒测试研究

在写sql语句的时候,我们知道字段可以用is nullis not null进行判断条件。

但是往往会忽略掉索引,引起全表扫描。

这个检测器就是检查java代码中存在的sql语句,同时对这些sql语句进行分析。

判断是否违反了优化的规则。

   sql检测器是一系列的检测器,概要的设计之前我有篇文章

白盒测试之静态检查--sql检测器设计”有介绍。

eclipse上运行结果:

 

1.1.1 PERFORMANCE_DB_SQL_NULL

sql语句使用了is nullis not null

1.1.1.1      版本

Verson:1.2.0

 

1.1.1.2      作者

Author: River.liu

Date : 2010.4.10

Email :  liuhanhong@yahoo.com.cn

1.1.1.3      原理

1sql语句使用了is nullis not null
在建立索引的数据列中使用is nullis not null值,该列的索引将会忽略。
已验证数据库oracle
2
、例如
String sql1="select last_name from a WHERE last_name IS NULL";
String sql2="select last_name from a WHERE last_name IS not NULL";

1.1.1.4      开发原理

用正则表达式来匹配

1、必须为sql语句

匹配规则: .*select.*from.*where.*

2、满足下面任何一个条件

1)包含is null

匹配规则:.*is*null.*

2)包含is not null

匹配规则:.*is*not*null.*

1.1.1.5      配置说明

配置文件pluginConfig.properties在插件的jar包里面,直接修改里面的配置项目,再放回jar包就可以了。

1.1.1.5.1     isOpen

是否启用该检测器。

1.1.1.6      误报说明

1、可能把类似sql的字符串的语句误判为sql语句
2
、用户根据需要确定是否进行sql优化


TAG:

 

评分:0

我来说两句

xiaohanjiang

xiaohanjiang

River.liu又名小寒江。曾经从事多年JAVA软件开发工作,这几年一直从事软件测试工作。多年来,一直致力于软件工程、软件开发、软件测试方面的研究。不喜欢自称高手,不愿意自封资深;科学研究讲究的是务实、实践。真理、真知才是硬道理。茫茫海洋,我只希望我的每个理念能游弋于业界之间。我的思想能在你的脑海中徜徉。

日历

« 2024-03-27  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 39279
  • 日志数: 52
  • 建立时间: 2009-12-15
  • 更新时间: 2011-03-14

RSS订阅

Open Toolbar