使用count(*)查询

Sql写法

  1. SELECT count(*) FROM table WHERE a = 1 AND b = 2

Java写法

  1. int nums = xxDao.countXxxxByXxx(params);
  2. if ( nums > 0 ) {
  3. //当存在时,执行这里的代码
  4. } else {
  5. //当不存在时,执行这里的代码
  6. }

优化写法

Sql写法

  1. SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

Java写法

  1. Integer exist = xxDao.existXxxxByXxx(params);
  2. if ( exist != null ) {
  3. //当存在时,执行这里的代码
  4. } else {
  5. //当不存在时,执行这里的代码
  6. }

总结

SQL不再使用count,而是改用LIMIT 1,让数据库查询时,遇到一条就返回,不再继续查找还有多少条,业务代码中直接判断是否非空即可,根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。