SQL中到底要不要用WHERE 1=1
当遇到多个查询条件且这些查询条件都有可能为空时,常用的方法是用<isNotEmpty >标签,例如:
本文共 1003 字,大约阅读时间需要 3 分钟。
当遇到多个查询条件且这些查询条件都有可能为空时,常用的方法是用<isNotEmpty >标签,例如:
这时候如果所有的条件都没有,那么where 1=1就没有任何意义。那么,这样写到底合不合适呢?
答案是正确编码习惯下是合适的,主要包括以下几个方面:
A:先看看不合适到底是什么原因?如下是一段截图:
B: 对A观点的对立:
无论是否有 1=1 and ,查询分析器都会估计相同的行数,从而拥有同样的执行计划,因此不影响性能;另外,现在使用的大多数数据库如mySlq、SQLserver等 在查询分析器在代数树优化阶段就把1=1 直接给过滤掉了。这个功能就是查询优化器中所谓的“Constant Folding” 。
C: 但是如果这样用不好,有可能会出现Sql注入。
D:呀不想写了
转载于:https://my.oschina.net/FourierSeriesNzh/blog/1816353