MySQL核心知识点总结
1. 索引
唯一索引与普通索引:唯一索引保证数据唯一性,但更新时可能比普通索引慢,因为需要校验唯一性。
索引优化:尽量使用主键查询,利用联合索引减少回表操作,将高频字段放在联合索引最左边。
索引失效情况:LIKE以“%”开头、OR语句未同时使用索引、数据类型隐式转化等。
2. 存储引擎
MyISAM:不支持事务,采用表级锁,支持全文索引,适合读多写少的场景。
InnoDB:支持事务、行级锁、外键和多版本并发控制(MVCC),适合高并发场景。
其他引擎:Heap(内存表)、Merge(合并表)、Federated(联邦表)等。
3. 事务
4. 数据类型
5. 查询优化
分页查询优化:使用SELECT * FROM T WHERE id > #{ID} LIMIT #{LIMIT}
代替LIMIT OFFSET
。
查询缓存:MySQL 8.0已删除查询缓存功能,频繁更新的表不适合使用查询缓存。
优化方法:设计良好结构、主从分离、分表、缓存机制、静态页面、优化SQL。
6. 数据库设计
7. 锁
表级锁:开销小,加锁快,但并发度低。
行级锁:开销大,加锁慢,但并发度高。
锁优化策略:读写分离、分段加锁、减少锁持有时间。
8. 数据恢复
9. 性能分析
10. 安全与权限
11. 其他知识点
自增主键行为:MyISAM表重启后继续递增,InnoDB表重启后从删除的ID开始。
ENUM类型:用于指定预定义值集,如
ENUM('Small', 'Medium', 'Large')
。
REGEXP:模式匹配,支持正则表达式。
获取MySQL版本:SELECT VERSION()
。
查看索引:SHOW INDEX FROM
。
显示前50行:SELECT * FROM TABLE LIMIT 0,50
。
NOW()与CURRENT_DATE():NOW()返回日期和时间,CURRENT_DATE()仅返回日期。
这些知识点涵盖了MySQL的核心内容,适合准备面试或复习基础知识的人员参考。
关注微信公众号“人工智能产业链union”回复关键字“AI面试07”获取下载地址。