Site Overlay

判断一个非主键字段是否存在数据的三次改进

第一次

封装一个HashMap,将查询条件put进去,然后使用MyBites的默认方法SelectByMap,查出来一个List,然后根据List.size!=0,判断该条数据是否存在存在问题

存在问题:

如果数据库表中存在10W条数据,通过默认方法查询一个List,即使查到了一个重复的,数据库还是会继续查下去,直至走完10W条数据,导致浪费数据库资源。

第二次

通过MyBites注解自定义SQL语句写到Dao层接口中,加上@SELECT注解,在注解后参数中写入SQL语句

SELECT * 
FROM 数据库表 
WHERE #字段名={参数} 
LIMTE 1

同样返回一个List,然后根据List.size!=0,判断该条数据是否存在,LIMIT 1 限定了只查一条,查到了一条符合条件的数据后就返回,不会继续走完整个表。

存在问题:

如果数据库表字段特别长,每次查询,即使加了LIMIT 1,只查询一条,但是也会把所有字段加载出来,导致浪费数据库资源。

第三次

同第二次一样自定义SQL语句

SELECT * 
FROM 数据库表 
WHERE #字段名={参数} 
LIMTE 1

count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。

最后一次解决了数据库表中数据特别多,字段特别长的情况下的数据库资源浪费,并且简化了判断数据存在的方式,直接返回一个int数值,通过判断这个数值!=0,就可以判断出该条数据是否存在。

发表回复

您的电子邮箱地址不会被公开。

A beliving heart is your magic My heart
欢迎来到Diuut的个人博客,这里是我的一些零零碎碎的知识汇总,希望有能帮到你的内容。 | 蜀ICP备2021011635号-1 | Copyright © 2024 Diuut. All Rights Reserved.