SQL多条件查询安全高效比较
ALTER PROCEDURE _tmp
@ID VARCHAR(50),
@PN VARCHAR(50),
@Type INT
AS
BEGIN
/**********************************
-- 功能:多条件查询性能
_tmp 'K3G8KG6NN94SBBS0','K7F7FF',0
**********************************/
PRINT '测试数据条数500W' set nocount ON DECLARE @time DATETIME
DECLARE @Warring VARCHAR(5000)
IF(@Type=1 OR @Type=0)
BEGIN
SET @Warring=CHAR(10)+'第一种方式,直接拼SQL语句,有SQL注入漏洞';PRINT @Warring;SELECT @Warring
SET @time=GETDATE() DECLARE @SQL VARCHAR(4000)
SELECT @SQL='SELECT * FROM dbo.tb_timetest WHERE 1=1'
IF(ISNULL(@ID,'')<>'') SET @SQL=@SQL+' AND id='''+@ID+''''
IF(ISNULL(@PN,'')<>'') SET @SQL=@SQL+' AND PN='''+@PN+'''' EXEC(@SQL) PRINT '所需时间_毫秒'
PRINT DATEDIFF(MILLISECOND,@time,GETDATE())
END
IF(@Type=2 OR @Type=0)
BEGIN
SET @Warring=CHAR(10)+'第二种方式,没有像第一种方式那样的SQL漏洞,但是性能大大折扣,就是耗时';PRINT @Warring;SELECT @Warring
SET @time=GETDATE() SELECT * FROM dbo.tb_timetest WHERE (ISNULL(@ID,'')=''OR id = @ID) AND (PN = @PN OR @PN IS NULL) PRINT '所需时间_毫秒'
PRINT DATEDIFF(MILLISECOND,@time,GETDATE())
END
IF(@Type=3 OR @Type=0)
BEGIN
SET @Warring=CHAR(10)+'第三种方式,虽然写法没有第二种简洁,但是也没有像第一种方式那样的SQL注入漏洞,是本人目前能想到最优的';PRINT @Warring;SELECT @Warring
SET @time=GETDATE() DECLARE @S NVARCHAR(4000),@P NVARCHAR(4000)
SET @P=N'@ID VARCHAR(50),@PN VARCHAR(50)'
SET @S='SELECT * FROM dbo.tb_timetest WHERE 1=1'
IF(ISNULL(@ID,'')<>'') SET @S=@S+' AND id = @ID'
IF(ISNULL(@ID,'')<>'') SET @S=@S+' AND PN = @PN' EXEC sp_executesql @S,@P,@ID=@ID,@PN=@PN PRINT '所需时间_毫秒'
PRINT DATEDIFF(MILLISECOND,@time,GETDATE())
END
END
SQL多条件查询安全高效比较的更多相关文章
- util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案
		
ylbtech-funcation-util: C# 复杂条件查询(sql 复杂条件查询)查询解决方案 C# 复杂条件查询(sql 复杂条件查询)查询解决方案 1.A,Ylbtech.Model返回 ...
 - Mybatis中动态SQL多条件查询
		
Mybatis中动态SQL多条件查询 mybatis中用于实现动态SQL的元素有: if:用if实现条件的选择,用于定义where的字句的条件. choose(when otherwise)相当于Ja ...
 - Webform中linq to sql多条件查询(小练习)
		
多条件查询:逐条判断,从第一个条件开始判断,如果满足,取出放入集合,再从集合中查询第二个条件... aspx代码: <body> <form id="form1" ...
 - SQL 多条件查询
		
网上有不少人提出过类似的问题:“看到有人写了WHERE 1=1这样的SQL,到底是什么意思?”.其实使用这种用法的开发人员一般都是在使用动态组装的SQL.让我们想像如下的场景:用户要求提供一个灵活的查 ...
 - C# SQL多条件查询拼接技巧
		
本文转载:http://blog.csdn.net/limlimlim/article/details/8638080 #region 多条件搜索时,使用List集合来拼接条件(拼接Sql) Stri ...
 - SQL 变量 条件查询 插入数据
		
(本文只是总结网络上的教程) 在操作数据库时 SQL语句中难免会用到变量 比如 在條件值已知的情況下 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值 ...
 - sql---如何把sql查询出来的结果当做另一个sql的条件查询,1、语句2、with as
		
'; -- table2 的 name 作为 table1的条件 select * from table1 where name in (select name from table2) --如果有多 ...
 - qt sql多重条件查询简便方法
		
转载请注明出处:http://www.cnblogs.com/dachen408/p/7457312.html 程序设计过程中,经常要涉及到查询,并且有很多条件,且条件可为空,如果逐个判断,会有很多情 ...
 - C# SQL 多条件查询技巧
		
#region 多条件搜索时,使用List集合来拼接条件(拼接Sql) StringBuilder sql = new StringBuilder("select * from PhoneN ...
 
随机推荐
- [tp3.2.1]sql查询语句(一)
			
基本查询方式 字符串条件查询, 索引数组条件查询 对象条件查询 SQL语句大小写是一样的,但是,执行的时候有一个小写到大写的转换,所以最好写大写 $condition=new ...
 - ORA-000845 与 /dev/shm(tempfs)
			
MEMORY_TARGET参数在Oracle 11g被引进,主要是用于控制Oracle对于系统内存的使用,首次将SGA与PGA整合到一起实现自动管理.一旦设置了MEMORY_TARGET参数值,Ora ...
 - iOS OC与swift相互调用
			
小哥("我"的自称)个人混编的时候喜欢先创建OC项目,然后在项目中创建swift类.这样有个好处就是桥文件可以自动创建的同事路径不需要我手动去写了,另外还有个目的就是现在小哥自我感 ...
 - 我是如何对网站CSS进行架构的
			
by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=944 一.写在前面的 ...
 - Intel Edison
			
起步: https://software.intel.com/zh-cn/node/628224 刷机: https://software.intel.com/zh-cn/flashing-firmw ...
 - 安装LAMP
			
1.首先打开命令行,获得最新的软件包 sudo apt-get install update 2.安装MySQL数据库 sudo apt-get install mysql-server mysql- ...
 - PHP中Array关于数组的用法
			
使用函数array_keys(),得到数组中所有的键,参数:数组 $arr=array();$arr['one']="one";$arr['two']="two" ...
 - 8、web入门回顾/ Http
			
1 web入门回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: % ...
 - 收集 关于php的博文
			
1. 小狼的世界: 浅谈用php实现mvc:http://www.cnblogs.com/cocowool/archive/2009/09/08/1562874.html 关于MVC的定义和解释,可以 ...
 - CSS3前缀自动补全方案和插件
			
第一种方法:prefix free,js插件,大小2kb,直接导入,无需任何浏览器兼容前缀 <script src="prefixfree.min.js"></s ...