SQL中 为什么要避免在where后使用'1=1'这种表达式作为部分条件

如题所述

并非一定要避免,而是数据量很多的情况下,这种条件会导致sql执行的时候忽略掉索引的优势,导致查询效率很低。所以,只在数据量很大的时候才是需要尽量避免使用。
数据量少的时候,用这个还是很方便的。

参考资料:http://blog.csdn.net/farawayhome/article/details/6621114

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-04-12
因为1=1不管在任何条件下都是成立的,等于没加条件,所以如果在update时用这个作为条件,容易犯下把全部的数据都改了的错误操作本回答被网友采纳
第2个回答  2012-03-22
是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。
and user>0,这时,服务器运行Select * from 表名 where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,本回答被提问者采纳
第3个回答  2012-03-22
比如你要筛选数据,筛选的数据有好几个,这个时候你就要用where条件了。在我看来加上1=1是为了在代码中避免出错,如果加and符号,where 1=1 and XXX 这样子就不会出错,如果加的查询条件是and 并且前边只有where的时候就会出错。
多用于前台筛选,加筛选条件。

SQL中 为什么要避免在where后使用'1=1'这种表达式作为部分条件
并非一定要避免,而是数据量很多的情况下,这种条件会导致sql执行的时候忽略掉索引的优势,导致查询效率很低。所以,只在数据量很大的时候才是需要尽量避免使用。数据量少的时候,用这个还是很方便的。参考资料:http:\/\/blog.csdn.net\/farawayhome\/article\/details\/6621114 ...

sql语句中“where1=1”是什么意思?
where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。SQL语句 中是SQL语句必须定义的部分,[]中是SQL语句可选择的部分,可以省略的。所要定义的基本表的名称,一个表可以由一个或若干个属性(列)组成,但至少有一个属性,不允许一个属性都没有的表,这样不是空表的...

【SQL面试】WHERE 1=1 到底是啥意思?
WHERE 1=1 是SQL语境中的一个熟知结构,尤其在MySQL中。它并非字面意义上的逻辑表达,而是作为动态SQL查询构建中的关键组成部分。在SQL查询中,WHERE子句的作用是筛选数据,采用1=1时,它总是返回true,因为这个表达式恒为真。因此,它实际上会选中表中的所有行,不进行任何筛选。尽管如此,使用1=1的...

sql语句中where 1=1是什么意思
where 1=1是sql语句条件逻辑判断表达式,由于1=1成立,恒为真,该表达式1=1将始终返回"真"。这种写法实际目的是为了获取逻辑值"True",其实诸如2=2, 1+2=3,'中'='中'等之类的写法都可以返回逻辑值"True",只不过1=1的运算开销更小,故被应用的最普遍。下面例子将有助于理解有关概念:1) se...

为什么SQL语句Where 1=1 and在SQL Server中不影响性能
两个条件一“真”一“假”,“真”与“假”返回“假”所以SQL语句筛选表达式(1=1)对整体条件判断结果无影响,实质筛选取决于and后面的条件筛选结果。我们扩展看一下另一种写法"Where 1>1 and "1>1不成立,该表达式将始终返回布尔值False(假)当表达式2=True 时 两个条件一“假”一“真”,...

为什么SQL语句加 1=1
3。如果至少有二个条件,“where”后面的第一个条件前面是不需要“and”的,因为5列条件可以任意组合,我们就需要判断哪一列会是紧跟在“where”后面的,这时候又需要代码来判断 第二种方案:如果初始sql是这样:select * from t1 where 1=1 现在对于第一种方案里面的任何一种情况,我们都只需要直接...

sql查询如何优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,应尽量避免在 where 子句中使用!=或<>操作符,应尽量避免在 where 子句中使用 or 来连接条件因为以上的查询会导致导致引擎放弃使用索引而进行全表...

SQL注入采用的' OR 1=1 # 是什么意思呢?
一般SQL代码中会有这么一段 SELECT * FROM TABLENAME WHERE ID = 变量,当通过注入后会变成 SELECT * FROM TABLENAME WHERE ID = 变量 OR 1=1;就会使WHERE后面的表达式变成一句可有可无的表达式,与 SELECT * FROM TABLENAME相等 然后就可以通过这种句式来取得当前数据表中所有的用户信息。

在SQL中使用 WHERE字句中使用,= < >等的表达式,是不是在一个有创建索 ...
②.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;③.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列 (1)‘!=’ 将不使用索引. 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中. (2) ‘||’是字符连接函数. 就象其他函数那样, 停用了...

SQL语句中,where后面多添加了一个判断条件,执行时间从2秒升至50秒...
条件可能没有索引,再可把几个条件的顺序移动下。对照下常用的优化方法:2. 避免出现SELECT * FROM table 语句,要明确查出的字段。3. 在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。4. 查询时尽可能使用索引覆盖。即对SELECT的字段建立复合索引,...

相似回答