如何高效的检索数据库中是否存在某些数据?
一般第一想法是count一下:
SELECT COUNT(*) FROM sys_log WHERE uri LIKE '/%'; 然后业务逻辑中判断 返回值是否大于0;
int nums = xxDao.countXxxxByXxx(params);
if ( nums > 0 ) {
//当存在时,执行这里的代码
} else {
//当不存在时,执行这里的代码
}
这样sql语句相对来说效率不高。可以优化为
SELECT 1 FROM sys_log WHERE uri LIKE '/%' LIMIT 1; 遇到一行符合的就直接返回。
##### 业务逻辑:
Integer exist = xxDao.existXxxxByXxx(params);
if ( exist != NULL ) {
//当存在时,执行这里的代码
} else {
//当不存在时,执行这里的代码
}
这里我测试的表数据总量9000左右,表数据量越大效果越明显
![](https://img.haomeiwen.com/i12785400/690f341edac2c20b.png)
网友评论