MYSQL5- 联合索引 & 外/内连接查询 & 子查询

MYSQL5

  • JOIN 连接
  • 外连接查询
  • 内连接查询
  • 左链接查询
  • 索引
    • 创建联合索引
  • 数据库项目的优化地方
  • 记录慢查询日志和 慢查询时间

建立了三个表
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第1张图片
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第2张图片
一对一连接:
将一个表的主键插入到另外一个表里
一对多连接:
要创建中间表

JOIN 连接

JOIN 按照功能大致分为如下三类:
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第3张图片MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第4张图片

外连接查询

带in的子查询:(查找买过东西的人的信息 通过订单中的orderid查询)
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第5张图片

内连接查询

查找买过东西的用户的信息
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第6张图片
小表是整表的搜索 用小表的id去大表里查询 不用产生存储临时数据的中间表(a,b是别名)
建索引给大表 用小表id去大表里找

左链接查询

查右边的表没有的左边的数据
查没有买过东西的用户的信息
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第7张图片MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第8张图片

索引

MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第9张图片

B+树即排序的树

主键默认就建索引
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第10张图片上图中--------
给name字段添加索引后:

  • 主键索引树 放的是所有的值
  • 辅助索引树放的是当前的索引+主键id

对于select name,id from user where name=‘wang’;
不用回到主键索引树

对于select name,id,age from user where name='wang';
要搜age得去主键索引树上找 因为name的辅助索引树只存了name和主键id 并没有存储age

所以select后面最好指定自己要搜索的东西 不然写*的话就得输出全部信息就得回到主键索引树上

创建联合索引

MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第11张图片create index name age index on user(name,age);
联合索引树放name age 和主键id

select *from user where age =18

这句用不到联合索引 因为联合索引先找第一个字段name 而这句找的age

数据库项目的优化地方

用explain 查看代码中操作比较慢的地方
创建的多列联合索引在用到的时候注意会先找第一个字段
有过滤条件 还有分组 一定要建立联合索引
设置合理的慢查询时间,查看慢查询日志中执行得慢的代码 对其进行优化
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第12张图片

select *from user where a=3 or b=4;

可能会直接整表查找 但是也会被MySQL Server优化

select *from user where a=3 union select *from user where b=4;

第一次查询a的索引,第二次查询b的索引,查询两次 然后把这两次查询联合起来

在建表的时候建索引:
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第13张图片

给已经建好的表建索引以及删除索引:
在这里插入图片描述
查看我建好的索引的话需要具体到建的键 比如给name建了索引 需要用where定位到name=’’
可以看到主键已经加到了age上
MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第14张图片

记录慢查询日志和 慢查询时间

MYSQL5- 联合索引 & 外/内连接查询 & 子查询_第15张图片

  • explain+SQL语句 查看SQL语句的执行计划
  • 两个表(A表和B表)的联合查询SQL语句,小表决定查询次数,大表决定查询时间
  • 索引以 磁盘文件的方式 进行存储
  • 使用索引–》 从磁盘文件读取索引文件(磁盘I/O的次数 越少越好) 把索引文件里面的数据读取到内存上,进行组织

你可能感兴趣的:(MYSQL,数据库,mysql,sql)