开发者社区> 问答> 正文

经常在业务代码中看到有人写Where 1=1的SQL,这样SQL是否高效可行,有什么风险?

经常在业务代码中看到有人写Where 1=1的SQL,这样SQL是否高效可行,有什么风险?

展开
收起
晓风瑟瑟 2021-10-13 23:49:15 1218 0
3 条回答
写回答
取消 提交回答
  • 不建议使用where 1=1这种语句,一是不安全,存在SQL注入的风险;二也不高效,可能会造成查询条件失效,全表扫描;

    2021-10-16 03:26:31
    赞同 展开评论 打赏
  • 用于动态的SQL,防止where 条件为空

    2021-10-14 10:07:47
    赞同 展开评论 打赏
  • 1、 SQL中使用了where 1=1 ,很优美的解决了参数中ageValue为空时SQL语法错误的情况。但是当表中的数据量比较大的时候查询速度会非常慢,很可能会造成非常大的性能损失。

    2、 加了“1=1”的过滤条件以后数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)以比较此行是否满足过滤条件,因此如果数据检索对性能有比较高的要求就不要使用这种“where 1=1”的方式来偷懒。

    2021-10-14 09:04:33
    赞同 1 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载