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;
相关推荐
顾北122 小时前
MCP服务端开发:图片搜索助力旅游计划
java·spring boot·dubbo
山岚的运维笔记2 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
我命由我123452 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
赛姐在努力.2 小时前
【拓扑排序】-- 算法原理讲解,及实现拓扑排序,附赠热门例题
java·算法·图论
yxc_inspire2 小时前
Java学习第二天
java·面向对象
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于net超市销售管理系统为例,包含答辩的问题和答案
java
island13142 小时前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络
昀贝2 小时前
IDEA启动SpringBoot项目时报错:命令行过长
java·spring boot·intellij-idea
xcLeigh2 小时前
Python入门:Python3 requests模块全面学习教程
开发语言·python·学习·模块·python3·requests
xcLeigh2 小时前
Python入门:Python3 statistics模块全面学习教程
开发语言·python·学习·模块·python3·statistics