mysql数据库的基本修养

  sql数据库除了sql语句,还有函数,如日期date(), 字符串函数string,uuid()等。

  近期项目组要做服务的迁移,但是迁移之后,数据库的数据读取速度非常慢,由于有新的开发任务,也就没有太多关注性能问题。一个同事经过测试发现,可能是数据库的用户密码的加密问题,后来数是没有使用数据库连接池。但是springboot不会自动使用连接池吗?很奇怪。

  迁移服务后,一个发送消息的服务突然提示不能使用了,看到日志报错大概为mapper的错误,提示no bind等等。然后找到相关的代码块。准备自己在本地运行,然后调试一下。但是由于实体类不是很好构造,然后自己准备从代码分析入口。看了对应的sql语句,dao接口和mapper文件都在,去看了sql语句,测试执行,也没有什么问题。考虑到服务以前都可以正常使用,应该是迁移服务后做的一些改动。然后我就看到了@MapperScan注解,这个对于扫描的包和类,我做过相关得到测试的,路径不对就会报错。所以我对这个比较敏感。可以看到,它没有具体到接口所在的包,而是在上一层级。于是这个问题就解决了。可以看到,这个问题的解决是依赖于比较扎实的基本功和经验(敏感性),而不是同过调试,浪费很多时间。

  关于迁库,我做的总是不那么完整,所以要记一下自己要做什么,然后去做。

1、多行函数(group function)和单行函数

  在sql函数中,有些函数是作用于单行字段的,有的是作用于多行字段。在我们熟悉的where和having的使用差别中,where语句就不能使用多行函数,而having可以。

聚合函数
count
,max,min 单行函数 length

 

 

 

 

参考博客:sql语句的执行过程

posted @ 2020-04-08 23:50  懂得了才能做一些改变  阅读(119)  评论(0编辑  收藏  举报