MySQL 进阶篇1.0 索引 SQL优化 视图 锁

01-课程介绍

02-存储引擎-MySQL体系结构

03存储引擎-简介

查询建表语句 --默认存储引擎:InnoDB

show create table account;

查询当前数据库支持的存储引擎

show engines;

04存储引擎-InnoDB介绍

开关为"ON": 表示每个innodb引擎的表都有一个idb表共享文件

05存储引擎-MyISAM和Memory

面试常考(InnoDB与MyISAM区别)

06存储引擎的选择(一般就是InnoDB,其他两个在其他SQL中都有优化版)

08MySQL安装(linux)&遇到的问题

输入password的时候 不显示输入 我还以为没输入进去真贱啊

没开Linux防火墙3306的端口 不能远程链接

linux怎么允许3306端口通过防火墙,Centos7允许3306端口通过防火墙_倪振源的博客-CSDN博客

cnm,nmsl,教的什么j8玩意,链接虚拟机地址都不让我们查一下? 老子查了两个点才查出来!!!!

【MySQL】DataGrip连接linux中的MySQL_猫打球商店的博客-CSDN博客_datagrip 连接linux服务器

mariadb-libs 被 mysql-community-libs-compat-8.0.26-1.el7.x86_64 取代_别晃我的可乐的博客-CSDN博客_mariadb-libs

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

直接停止再重启mysql服务

09索引-概述

10索引-结构-介绍

11索引-结构-Btree

红黑树和二叉树都存在问题:大数据量情况,层级较深,检索速度慢

最大度数:n 每个节点最多存储n-1个keyn个指针;分裂的时候中间向上左右

继续插入元素,

数据结构可视化网站

12索引-结构-B+tree

非叶子节点的数据作为索引

13索引-结构-hash

先计算每一行的hash值,然后计算name的hash值映射到蓝色hash槽位里面,然后存储(name,name对应的行的hash值)到hash表;

14索引-结构-思考题(why InnoDB引擎用 B+tree?)

B-树就是B树;

B+树的双向链表便于范围搜索和排序;不用hash因为只支持对等比较,不能范围且无序

15索引-分类聚集索引&二级索引

可以这样理解,可以通过聚簇索引(一般都是主键索引)直接查到数据,如果通过二级索引,则需要通过二级索引定位数据对应的主键索引(聚簇索引),再通过主键索引(聚簇索引)找到数据,因为聚簇索引的叶子节点有数据

聚集索引之所以必须有是因为他是用来存储数据的,而二级索引更多的使用来更快更高效的查询数据

*16索引-思考题

n=key数量;8=主键占用的字节数;n+1 指针;6指针字节;一页16kb

而每一个页有16k,一行数据假设为1k,就是每页可以存储16行。切记,只有叶子节点才是存放数据,非叶子节点是存储的索引

两千多万数据也才3层;

17索引-语法

1. create index idx_user_name on tb_user(name);

2. create index idx_user_name on tb_user(name);

3. create index idx_user_pro_age_sta on tb_user(profession,age,status);

4. create index idx_user_email on tb_user(email);

18索引-性能分析-查看执行频次

Com七个_; _代表字符占位符

因为7个下划线正好和_select,_update,_insert和_delete的拼写长度一样

代表当前数据库增删改查的次数

19索引-性能分析-慢查询日志

20索引-性能分析-show profiles

21索引-性能分析-explain 执行计划

连接类型type

NULL:查询不妨问任何表时出现NULL, 如:select 'A',业务系统的sql一般不可能优化到NULL; system:访问系统表 const:根据主键/唯一索引访问; ref:使用非唯一索引查询

eq_ref 在主键索引或者唯一性索引用于做被驱动表的连接字段时就会出现

index:使用了索引,但会扫描遍历整个索引树 all:全表扫描

22索引-使用规则-验证索引效率

23索引-使用规则-最左前缀法则

24索引-使用规则-索引失效情况一

25索引-使用规则-索引失效情况二

先看or后面的,后面没有那都没有,后面有在看前面的;必须两个都有才用索引

道理很简单,你要在一堆东西中找两个东西,一个能够立即找到,但是另外一个必须在所有东西中找;

26索引-使用规则-SQL提示

(use只是一种建议 mysql是否接受不一定要看效率) use/ignore/force 建议/不用/强制使用

27索引-使用规则-覆盖索引&回表查询

面试题:最佳方案:针对username-password建立联合索引 因为联合索引是二级索引,B+树叶子下面挂的是ID(主键),所以执行select不需要回表查询 性能最好

28索引-使用规则-前缀索引

29使用规则-单列&联合索引

创建索引(phone,name) 先 按phone排列 后按name;

满足最左前缀法则;所以要考虑参数顺序 单列索引容易回表查询,性能降低

30索引-设计原则

31索引-小结

32SQL优化-插入数据

33SQL优化-主键优化(每页包含2~n)

编辑

编辑

编辑

编辑

编辑

编辑

编辑

34SQL优化-order by优化

编辑

编辑

编辑

35SQL优化-group by优化

编辑

36SQL优化-limit优化

编辑

37SQL优化-count优化(由存储引擎决定)

编辑

编辑

编辑

38SQL优化-update优化(避免行锁升级为表锁)

编辑

39SQL优化-小结

编辑

40视图-介绍及基本语法

编辑

编辑

41视图-检查选项(cascaded) (译为:级联的)

编辑with cascaded check option;

视图 会在操作的时候检查是否满足where条件

并递归继续检查上面(依赖)的v2带cascaded的where 直到每个底层带cascaded的 都满足 才执行SQL;

42.进阶-视图-检查选项(local)

编辑

区别在于:local 当前v3没有检查选项 就不用管其它带(local的)依赖视图;

但是cascaded 就算v3没有也要管v2,v1(带cascaded检查选项的).

43.进阶-视图-更新及作用

编辑

编辑

44.进阶-视图-案例

编辑

posted @   软工菜鸡  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示