数据库相关

本文讨论了数据库选择的关键因素,如MySQL、PostgreSQL、Oracle等的区别,以及SQL优化策略,包括避免`select*`、使用索引、Mybatis的一级和二级缓存,以及如何在Mybatis_Plus中处理空值和设置默认值。
摘要由CSDN通过智能技术生成


数据库如何优化是一个老生常谈的问题。

数据库的选择?数据库之间的区别?

比较常用的就是mysql,免费开源, pgsql 免费 ,Oracle 收费 银行用的多,存储支持的多,高斯DB 国产数据库,kingbase 登登。区别很多,大部分都是项目上通用哪个选哪个。

sql的优化?

1.避免select * ,一是索引会失效,二是会有回表
2,。union 比 union更耗时
3.小表驱动大表,关联查询的话,先查数据集小的,再去关联数据大的
4.批量处理数据。
5.分批查数据,至少要做分页。limit
6.join不应该太多
7.加索引,避免索引失效。在大量查询的时候,应该少索引。
8.最好规定合适的类型,指定类型的大小

索引失效条件?索引是什么数据类型?

explain + sql 可以查询索引的执行计划。
在这里插入图片描述

索引用的是B+树,数的高度代表了查询的io次数。B+树的非叶子结点只存储索引,叶子结点存储数据,叶子结点还是双向链表,特别适合范围查找等等。一个page叶16KB,大概存储了1170个数据,1170117032=4KW的数据,够用了。
1.不满足最左前缀
2.使用select*
3.索引列上有计算,或者使用了函数,查询字段使用了is null
4.like左边有%
5.使用or

Mybatis的一二级缓存

Mybatis的缓存机制有两个一个是sqlSession级别的,这个是每次查询都会用的到的,这个是一级缓存,二级缓存是Mapper级别的缓存。
在这里插入图片描述

Mybatis_plus如何更新空值,如何设置默认值?

在使用 MyBatis-Plus 进行数据库操作时,可以通过 UpdateWrapper 来更新空值。

更新空值的示例代码如下所示:

// 创建 UpdateWrapper 对象
UpdateWrapper updateWrapper = new UpdateWrapper<>();
updateWrapper.set(“column”, null); // 将指定字段的值设为null

// 调用 update() 方法进行更新操作
int rowsAffected = entityMapper.update(entity, updateWrapper);
System.out.println(“影响的记录条数:” + rowsAffected);

@Data
public class User {
@TableId(type = IdType.AUTO) // 自动生成主键ID
private Long id;

@TableField("username") // 指定表中的列名
private String username;

@TableField(value = "age", insertStrategy = FieldStrategy.DEFAULT, updateStrategy = FieldStrategy.IGNORED) // 设置默认值并且不更新该字段
private Integer age;

}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值