聚簇索引:数据物理存储顺序与索引排序一致,快速范围查询和相等查询。
缺点是插入和删除效率低。
非聚簇索引:数据物理存储顺序与索引排序不一致,需要额外 I/O 查询数据,查询效率比聚簇索引低,但插入和删除效率更高。
唯一索引:保证表中每一行数据的列值唯一,查询速度较快。
全文索引:针对文本列进行索引,提高文本搜索效率。
2. InnoDB 和 MyISAM 存储引擎的差异
事务支持: InnoDB 支持事务,MyISAM 不支持。
锁机制: InnoDB 使用行锁,MyISAM 使用表锁。
存储结构: InnoDB 使用数据页组织数据,MyISAM 使用文件组织数据。
查询缓存: InnoDB 不支持查询缓存,MyISAM 支持。
3. 表连接类型及优化技巧
内连接: 仅返回两个表中匹配行的结果。
左外连接: 返回左表中的所有行,以及与右表匹配的右表中的行(即使没有匹配)。
右外连接: 返回右表中的所有行,以及与左表匹配的左表中的行(即使没有匹配)。
全外连接: 返回两个表中的所有行,即使没有匹配。
优化技巧: 使用索引、使用连接子查询、将大表拆分成多个小表。
4. SQL 查询优化原则
避免全表扫描: 使用索引缩小查询范围内。
限制结果集: 使用 WHERE 子句限制返回的行数。
使用正确的数据类型: 为列使用正确的类型可以提高查询效率。
避免使用 SELECT : 仅选择需要的列可以减少数据传输量。
使用视图: 视图可以简化复杂查询并提高性能。
5. 事务的 ACID 特性
原子性: 事务中的所有操作要么全部成功,要么全部失败。
一致性: 事务开始和结束时数据库处于一致状态。
隔离性: 事务与其他并发事务隔离,不会互相干扰。
持久性: 一旦提交,事务对数据库所做的更改将永久保存。
6. 触发器的用途和注意事项
用途: 在 INSERT、UPDATE 或 DELETE 操作后自动执行特定操作。
注意事项: 可能会降低性能,谨慎使用;在触发器中更新表可能会导致无限循环。
7. 视图与派生表的区别
视图: 基于一个或多个表创建的虚拟表,具有与实际表相似的功能。
派生表: 在查询中使用 SELECT 语句创建的临时表,仅存在于该查询的执行过程中。
区别: 视图是永久的,而派生表是临时的;视图可以被更新,而派生表不能被更新。
8. 存储过程和函数的区别
存储过程: 是一组 Transact-SQL 语句,可以接收参数并返回结果集。
函数: 是一个可重用的代码块,可以接收参数并返回单一值。
区别: 存储过程可以包含控制流(如循环和条件语句),而函数不能;存储过程可以修改数据库状态,而函数不能。
9. 数据复制的类型及其优缺点
主从复制: 一台服务器(主服务器)将数据更改复制到另一台或多台服务器(从服务器)。
优点是高可用性、负载均衡;缺点是配置复杂、需要维护多个服务器。
读写分离: 将读操作定向到从服务器,将写操作定向到主服务器。
优点是提高读性能、降低主服务器负载;缺点是数据延迟、需要设置主从关系。
10. MySQL 性能调优工具
EXPLAIN: 分析查询语句并提供执行计划。
SHOW PROFILES: 显示正在执行的查询配置文件。
MySQLTuner: 一个开源工具,用于分析和优化 MySQL 性能。
pt-query-digest: 一个工具,用于识别和分析慢查询。
![](https://img2.baidu.com/it/u=1301872056,180287359&fm=253.jpg)