SQL 查找是否"存在",别再 COUNT 了,很耗费时间的
以往的写法:
业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下
####sql写法:
select count(*) from table where a=1 and b=2
####java写法:
int num = xxxDao.countXxxByXxx(param);
if(num>0){
//当存在是,执行这里的代码
} else{
//当不存在时,执行这里的代码
}
优化方案:
####sql写法:
select 1 from table where a=1 and b=2 limit 1
####java写法:
Integer exist=xxDao.existXxxByXxx(Params)
if(exist!=null){
//当存在时,执行这里的代码
} else{
//当不存在时,执行这里的代码
}
SQL不再使用count,而是改用LIMIT1,让数据库查询时遇到一条就返回,不要在继续查找还有多少条了,业务代码里直接判断是否非空即可