大家常用的写法
在我们平时的开发过程中,我们常常会遇到这样的操作:查询数据库中是否存在某些记录,而我们的操作往往是这样的,下面我们以判断学生表中是否含有张三这个学生为例进行代码编写:
// SQL代码:
SELECT count(*) FROM student WHERE name = '张三'
// Java代码:
int num = studentDao.getStudentsByName(name);
if ( nun > 0 ) {
//如果num大于零则存在,接下来开始执行存在所需的逻辑代码
} else {
//否则的话就是不存在,然后开始执行不存在所需的逻辑代码
}
观察一下上面的代码,是不是大家平时随处可见的操作呢???
优化方案
//SQL代码:
SELECT 1 FROM student WHERE name = '张三' LIMIT 1
//Java代码:
Integer res = studentDao.getStudentsByName(name);
if ( res != NULL ) {
//如果num大于零则存在,接下来开始执行存在所需的逻辑代码
} else {
//否则的话就是不存在,然后开始执行不存在所需的逻辑代码
}
SQL不再使用count,而是改用LIMIT 1,让数据库查询时遇到一条就返回,不要再继续查找还有多少条了,业务代码中直接判断是否非空即可
总结
根据查询条件查出来的条数越多,性能提升的越明显,在某些情况下,还可以减少联合索引的创建。