其神若何,月射寒江。
白盒测试之静态检查--sql检测器检查存在is null、is not null的语句
上一篇 /
下一篇 2010-04-15 09:53:07
/ 个人分类:白盒测试研究
在写sql语句的时候,我们知道字段可以用is null、is not null进行判断条件。
但是往往会忽略掉索引,引起全表扫描。
这个检测器就是检查java代码中存在的sql语句,同时对这些sql语句进行分析。
判断是否违反了优化的规则。
sql检测器是一系列的检测器,概要的设计之前我有篇文章
“白盒测试之静态检查--sql检测器设计”有介绍。
eclipse上运行结果:
1.1.1 PERFORMANCE_DB_SQL_NULL
sql语句使用了is null、is 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 原理
1、sql语句使用了is null、is not null
在建立索引的数据列中使用is null、is 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: