没有合适的资源?快使用搜索试试~ 我知道了~
首页2021 MySQL互联网大厂面试精华:500题详解与权限详解
本文档是一份2021年的MySQL互联网大厂面试宝典,共包含185页,专为求职者准备,深入探讨了MySQL数据库的相关知识和面试常见问题。首先,强调了数据库的重要性,它作为数据存储解决方案,提供了存取速度快但数据不能持久保存的内存选项,以及数据永久保存但性能较低的文件存储。相比之下,数据库(如MySQL)的优势在于数据的持久性、使用SQL进行高效查询和数据管理。 SQL,即结构化查询语言,是用于管理和操作关系型数据库的标准工具,支持数据的增删改查等操作。MySQL则是最常见的开源关系型数据库管理系统,被广泛应用于Web应用,尤其在Java企业级开发中因其免费且易于扩展而受欢迎。 接着,文档介绍了数据库设计中的三大范式:第一范式确保数据原子性,第二范式强调非主键依赖完整性,第三范式则追求数据独立性,尽管在实际项目中可能因性能需求而适当违背某些范式。此外,权限管理在MySQL中至关重要,涉及多个权限表,如user、db、table_priv、columns_priv和host,分别控制用户的登录、数据库访问、表操作和列操作权限,以及基于主机的细化控制。 最后,文档提及MySQL的binlog(二进制日志)有三种格式,分别是:ROW格式,记录行级别的变更;STATEMENT格式,记录整个SQL语句的执行;混合格式,结合前两者特性。这三种格式的选择会影响系统的可恢复性和性能。 这份面试宝典为应聘者提供了全面的MySQL基础知识和面试技巧,包括数据库基础知识、SQL语言、MySQL系统架构、数据库设计原则以及关键运维管理概念,有助于提升求职者的竞争力。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/29952858/bg10.jpg)
2. 对排序结果生成倒排表
3. 在倒排表内容上拼上数据地址链
4. 在查询的时候,先拿到倒排表内容,再取出数据地址链,从而拿到具
体数据
索引算法有哪些?
索引算法有 BTree 算法和 Hash 算法
BTree 算法
BTree 是最常用的 mysql 数据库索引算法,也是 mysql 默认的算法。因为
它不仅可以被用在=,>,>=,<,<=和 between 这些比较操作符上,而且还可
以用于 like 操作符,只要它的查询条件是一个不以通配符开头的常量, 例
如:
-- 只要它的查询条件是一个不以通配符开头的常量
select * from user where name like 'jack%';
-- 如果一通配符开头,或者没有使用常量,则不会使用索引,例如:
select * from user where name like '%jack';
Hash 算法
Hash Hash 索引只能用于对等比较,例如=,<=>(相当于=)操作符。由
于是一次定位数据,不像 BTree 索引需要从根节点到枝节点,最后才能访
问到页节点这样多次 IO 访问,所以检索效率远高于 BTree 索引。
索引设计的原则?
![](https://csdnimg.cn/release/download_crawler_static/29952858/bg11.jpg)
1. 适合索引的列是出现在 where 子句中的列,或者连接子句中指定的
列
2. 基数较小的类,索引效果较差,没有必要在此列建立索引
3. 使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,
这样能够节省大量索引空间
4. 不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在
修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时
间就会越长。所以只保持需要的索引有利于查询即可。
创建索引的原则(重中之重)
索引虽好,但也不是无限制的使用,最好符合一下几个原则
1) 最左前缀匹配原则,组合索引非常重要的原则,mysql 会一直向右匹
配直到遇到范围查询(>、<、between、like)就停止匹配,比如 a = 1 and
b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d 是用不到索
引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d 的顺序可以任意调整。
2)较频繁作为查询条件的字段才去创建索引
3)更新频繁字段不适合创建索引
4)若 是 不 能 有 效 区 分 数 据 的 列 不 适 合 做 索 引 列 (如性别,男女未知,最多也
就三种,区分度实在太低)
5)尽量的扩展索引,不要新建索引。比如表中已经有 a 的索引,现在要加
(a,b)的索引,那么只需要修改原来的索引即可。
![](https://csdnimg.cn/release/download_crawler_static/29952858/bg12.jpg)
6)定义有外键的数据列一定要建立索引。
7)对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
8)对于定义为 text、image 和 bit 的数据类型的列不要建立索引。
创建索引的三种方式,删除索引
第一种方式:在执行 CREATE TABLE 时创建索引
CREATE TABLE user_index2 (
id INT auto_increment PRIMARY KEY,
first_name VARCHAR (16),
last_name VARCHAR (16),
id_card VARCHAR (18),
information text,
KEY name (first_name, last_name),
FULLTEXT KEY (information),
UNIQUE KEY (id_card)
);
第二种方式:使用 ALTER TABLE 命令去增加索引
ALTER TABLE table_name ADD INDEX index_name (column_list);1
ALTER TABLE 用来创建普通索引、UNIQUE 索引或 PRIMARY KEY 索引。
其中 table_name 是要增加索引的表名,column_list 指出对哪些列进行索
引,多列时各列之间用逗号分隔。
![](https://csdnimg.cn/release/download_crawler_static/29952858/bg13.jpg)
索引名 index_name 可自己命名,缺省时,MySQL 将根据第一个索引列赋
一个名称。另外,ALTER TABLE 允许在单个语句中更改多个表,因此可以
在同时创建多个索引。
第三种方式:使用 CREATE INDEX 命令创建
CREATE INDEX index_name ON table_name (column_list);
CREATE INDEX 可对表增加普通索引或 UNIQUE 索引。(但是,不能创建
PRIMARY KEY 索引)
删除索引
根据索引名删除普通索引、唯一索引、全文索引:alter table 表名 drop
KEY 索引名
alter table user_index drop KEY name;
alter table user_index drop KEY id_card;
alter table user_index drop KEY information;
删除主键索引:alter table 表名 drop primary key(因为主键只有一个)。
这里值得注意的是,如果主键自增长,那么不能直接执行此操作(自增长依
赖于主键索引):
![](https://csdnimg.cn/release/download_crawler_static/29952858/bg14.jpg)
需要取消自增长再行删除:
alter table user_index
-- 重新定义字段
MODIFY id int,
drop PRIMARY KEY
但通常不会删除主键,因为设计主键一定与业务逻辑无关。
创建索引时需要注意什么?
• 非空字段:应该指定列为 NOT NULL,除 非 你 想 存 储 NULL。在 mysql
中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统
计信息以及比较运算更加复杂。你应该用 0、一个特殊 的值或者一个
空串代替空值;
• 取值离散大的字段:(变量各个取值之间的差异程度)的列放到联合
索引的前面,可以通过 count()函数查看字段的差异值,返回值越大
说明字段的唯一值越多字段的离散程度高;
• 索引字段越小越好:数据库的数据存储以页为单位一页存储的数据越
多一次 IO 操作获取的数据越大效率越高。
使用索引查询一定能提高查询的性能吗?为什么
通常,通过索引查询数据比全表扫描要快。但是我们也必须注意到它的代价。
• 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或
索引列被修改时,索引本身也会被修改。这意味着每条记录的 INSERT,
DELETE,UPDATE 将为此多付出 4,5 次的磁盘 I/O。因为索引需
剩余184页未读,继续阅读
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/3682da37cd064defa2192255859ae2dc_goodxianping.jpg!1)
安全方案
- 粉丝: 2159
- 资源: 3863
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Lombok 快速入门与注解详解
- SpringSecurity实战:声明式安全控制框架解析
- XML基础教程:从数据传输到存储解析
- Matlab实现图像空间平移与镜像变换示例
- Python流程控制与运算符详解
- Python基础:类型转换与循环语句
- 辰科CD-6024-4控制器说明书:LED亮度调节与触发功能解析
- AE particular插件全面解析:英汉对照与关键参数
- Shell脚本实践:创建tar包、字符串累加与简易运算器
- TMS320F28335:浮点处理器与ADC详解
- 互联网基础与结构解析:从ARPANET到多层次ISP
- Redhat系统中构建与Windows共享的Samba服务器实战
- microPython编程指南:从入门到实践
- 数据结构实验:顺序构建并遍历链表
- NVIDIA TX2系统安装与恢复指南
- C语言实现贪吃蛇游戏基础代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)