SQL查询是否存在的优化|SQL查询是否存在的优化 千万不要使用count了
【SQL查询是否存在的优化|SQL查询是否存在的优化 千万不要使用count了】在实际的应用环境当中 我们通常会查询是否有满足条件记录 在数据库中是否存在 满足查询条件的记录可能有一条或者多条 但是只要有 就表示存在 通常思路是直接 count,count出来的结果如果大于0 则存在 反正则不存在!
select count(*) from table where a = 3 and b = 5
后台拿到结果
int num = findIsExistDao.getNum(params);
if (num > 0) {
// 存在的代码
} else {
// 不存在的代码
}
这样做在SQL层面 如果是超大数据量 那么耗时可想而知 count数都要数很久
但是我们只是想要查看是否有满足条件的记录存在于数据库中 不管他是只有一条 还是多条 只要有 那么就存在 没有 则不存在 所以可以使用以下的方法来判断:
select 1 from table where a = 3 and b = 5 limit 1
惊不惊喜 意不意外 只需要合理使用Limt 取一条数据即可 存在则直接返回1 没有的话 则为空值 毕竟我们的需求是判断库中是否有满足条件的字段 只要有 就满足
这样的话 java代码中就可以稍微的改一下了:
Integer exist = findIsExistDao.getNum(params);
if (exist != null) {
// 存在的代码
} else {
// 不存在的代码
}
细心的小伙伴肯定会看到Java代码里面 上面的使用的是Int来接收 下面这里使用的是Integer来接收 count查询出来没有就是0 所以返回回来的肯定不为空值的 int是不能存放空值的 所以使用他的包装类。
认真分析需求 注重细节 掌握一些小技巧 能大大提高系统的性能问题
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- 你是否也是一道风景()
- py连接mysql
- 2019-01-18Mysql中主机名的问题
- C语言解方程的根和判断是否是闰年
- MySql数据库备份与恢复
- mysql|InnoDB数据页结构