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;
相关推荐
半桶水专家3 分钟前
父子组件通信详解
开发语言·前端·javascript
寻星探路10 分钟前
测试开发话题10---自动化测试常用函数(2)
java·前端·python
鸢尾掠地平17 分钟前
Python中常用内置函数上【含代码理解】
开发语言·python
Dxy123931021622 分钟前
MySQL的UPPER函数介绍
数据库·mysql
倔强的石头_24 分钟前
KingbaseES:从兼容到超越,详解超越MySQL的权限隔离与安全增强
数据库
api_1800790546029 分钟前
请求、认证与响应数据解析:1688 商品 API 接口深度探秘
java·大数据·开发语言·mysql·数据挖掘
陈果然DeepVersion29 分钟前
Java大厂面试真题:Spring Boot+Kafka+AI智能客服场景全流程解析(十二)
java·spring boot·ai·kafka·面试题·向量数据库·rag
yours_Gabriel30 分钟前
【设计模式】UML和设计原则
java·设计模式·uml
唐古乌梁海31 分钟前
【Java】JVM 内存区域划分
java·开发语言·jvm
低调小一35 分钟前
Android Gradle 的 compileOptions 与 Kotlin jvmTarget 全面理解(含案例)
android·开发语言·kotlin