简介
关系型数据库
-
顾名思义,关系型数据库就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。
-
关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。
-
MySQL ,底层数据结构 :B+TREE
-
MySQL 的默认端口号是3306
常见的关系型数据库
- MySQL、PostgreSQL、Oracle、SQL Server、SQLite(微信本地的聊天记录的存储就是用的 SQLite)
sql优化和索引
sql优化
1、成绩汇总这块拿到sql效率有点低,为啥慢
- 业务逻辑问题
- 索引不太合适
- type级别低
2、如何查找慢sql
- druid有监控页面,开启慢查询日志,查看执行慢的sql,
- explain关键字,查看type字段(all,index)等,如果是全局扫描(或级别低)就进行优化。至少达到range级别,最好达到ref级别
- 接着用profile查看慢的细节问题,进行调优
3、级别
- all
- index
- range
- ref
4、索引失效的情况
- like模糊查询时,%号加在最前面,导致失效
- sql语句对加索引的字段进行了函数计算,失效
- sql语句中如果有isnull,isnotnull,也会失效
5、为什么会失效
- 因为底层用的B+tree,需要左边右边查,如果是isnull这样,就不知道去哪边查了。
6、经常加什么索引(二者选择按照业务来,)
- 单值索引,一个索引中就一个 字段
- 联合索引,一个索引中有好