SQL 查找是否“存在“,优化写法

普遍写法

SQL:

SELECT count(*) FROM table_name WHERE condition1 AND …

Java:

int nums = xxMapper.countXxxxByXxx(params);
if ( nums > 0 ) {
//当存在时,执行这里的代码
} else {
//当不存在时,执行这里的代码
}

优化

SQL

MySQL写法
SELECT 1 FROM table_name WHERE condition1 AND … LIMIT 1
Oracle写法
SELECT 1 FROM table_name WHERE condition1 AND … AND ROWNUM = 1

Java:

Integer exist = xxMapper.existXxxxByXxx(params);
if ( exist != NULL ) {
//当存在时,执行这里的代码
} else {
//当不存在时,执行这里的代码
}

SQL不再使用count,而是改用LIMIT 1 (MySQL) 或者 ROWNUM = 1 (Oracle),让数据库查询时遇到一条就返回

你可能感兴趣的:(小问题解决)