20230831工作心得:SQL这块花了挺多时间

1、SQL语句的问题

1、SQL这块花了挺多时间

1、理解业务

要之前自己要查什么数据,再去写SQL,这句话看起来像一句废话,但是很多时候,不知道自己在干嘛。

2、时间

1、需要查询哪个时间字段

表里有很多time有create_time,有call_time,还有start_time。同样的,其他的表里可能有很多看起来一样的字段,但实际上完全不一样,你需要知道。

除了time,可能还会有很多不同的status,你要看清是哪个,根据哪个条件判断,要修改哪个。不要像甜油和酱油一样搞不清

2、查询某个时间范围内的数据

如果要查询某个时间范围内的数据,

时间 <= 小的时间(比如startTime) > =大的时间(比如endTime)。

而不是反过来。这是很低级的错误,一定要注意。

3、mysql里 加 30 分钟的写法

错误示范:

t.create_time >= s.create_time+30

正确示范:

t.create_time >=DATE_ADD(s.create_time, INTERVAL 30 MINUTE)

3、MySQL 中,用于排序查询结果的关键字是ORDER BY ,而不是 SORT BY !

4、造数据的问题

可以先直接在生产环境查询,注意只是查询!

因为开发或测试环境里,经常没有数据。而且查询的时候,可以不要查多,先查1天的。

要清楚自己是根据什么条件查的,造数据的时候,就造和这些符合的。

2、lambda的问题

1 lambda表达式 map( m -> m::getPhone)

如果phone重复,就会报错 Duplicate key 。根据情况可以处理,也可以不处理。

如果要处理的话,可以这样:

复制代码
map( m -> m::getPhone,(k1, k2) -> k1) 

这个意思是如果出现相同的键,则选择第一个键对应的值。

2 可以在lambda表达示里使用,封装好的方法代码块

之前我有写过如何封装方法。【IDEA使用技巧】一键封装方法

这样代码就比较简洁了。

3、如果A项目引用了某个common包,想要更新A项目里的common包。

可以直接在common项目pull之后,install 就行了。因为它会自动打包,然后布置到本地仓库。因为A项目是引用了common依赖,它会自己更新。

4、XXL_JOB

1、传入的时间参数 ,要根据事实去处理!

又是一句看起来像废话,但是复制代码的时候不认真看的问题。

2、cron 表达式需要了解一下

写完之后,可以查看下次执行时间:

5、可能会随着环境改变的值,不要写死在代码里

比如,访问的接口,可以用@Value 注入,后期方便更新代码。

复制代码
@Value("${xx.xx.url:xxxxx}")
private String urlId;
相关推荐
数据智能老司机13 分钟前
CockroachDB权威指南——SQL调优
数据库·分布式·架构
数据智能老司机14 分钟前
CockroachDB权威指南——应用设计与实现
数据库·分布式·架构
XuanXu17 分钟前
Java AQS原理以及应用
java
数据智能老司机27 分钟前
CockroachDB权威指南——CockroachDB 模式设计
数据库·分布式·架构
风象南3 小时前
SpringBoot中6种自定义starter开发方法
java·spring boot·后端
mghio12 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室17 小时前
java日常开发笔记和开发问题记录
java
咖啡教室17 小时前
java练习项目记录笔记
java
鱼樱前端18 小时前
maven的基础安装和使用--mac/window版本
java·后端