浅析Sql语句中的where 1=1

在项目开发过程中发现在Dao层的查询SQL语句中出现很多where 1=1,下面从两个方面进行简单的分析:

1、不定查询条件

        首先说一下作用where 1=1用于放在查询条件个数不定的SQL语句中,例如在界面中需要根据部门名称(depart_name)或者时间等查询条件对数据进行筛选如在某个Dao层中:

public Map<String, Object> queryForPaging(Map<String, Object> paraMap) {
       StringBuffer sql=new StringBuffer("select* from 表1 where 1=1");
       //查询条件可以根据需要自由添加或者删除
       Object sql_start=paraMap.get("startDate");//开始时间start
        if(sql_start!=null&&!"".equals(sql_start)){
              sql.append(" and 表1.createdate>='"+sql_start+"'");
         }
       Object sql_end=paraMap.get("endDate");//结束时间end
       if(sql_end!=null&&!"".equals(sql_end)){
              sql.append(" and 表1.createdate<='"+sql_end+"'");
         }
       Map<String,Object>resultMap=queryForMap(sql);
       return resultMap;
}

通过上述的方式可以很方便的对SQL语句进行拼装,从而提高开发效率。

2、查询效率

首先mssql在多个条件下,会自动优化查询,以下两个语句是等效的
sql语句1——where 条件1 and 条件2
sql语句2——where 条件2 and 条件1

此外,本文以4万9千多条数据进行了多次简单的实验对照,发现加入了where 1=1的查询语句效率相当。


发布了16 篇原创文章 · 获赞 16 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/xiaoxiangshenjian/article/details/52790766
今日推荐