使用count(*)查询
Sql写法
SELECT count(*) FROM table WHERE a = 1 AND b = 2
Java写法
int nums = xxDao.countXxxxByXxx(params);if ( nums > 0 ) {//当存在时,执行这里的代码} else {//当不存在时,执行这里的代码}
优化写法
Sql写法
SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1
Java写法
Integer exist = xxDao.existXxxxByXxx(params);if ( exist != null ) {//当存在时,执行这里的代码} else {//当不存在时,执行这里的代码}
总结
SQL不再使用count,而是改用LIMIT 1,让数据库查询时,遇到一条就返回,不再继续查找还有多少条,业务代码中直接判断是否非空即可,根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。
