💡
原文中文,约2100字,阅读约需5分钟。
📝
内容提要
存储引擎决定表的存储方式。InnoDB支持事务和外键,而MyISAM不支持。MEMORY表数据存储在内存中,速度快;Archive表则采用压缩存储,性能高。索引失效的情况包括使用OR条件、LIKE以'%'开头和列上有运算等。
🎯
关键要点
- 存储引擎决定表的存储方式,可以通过SHOW ENGINES命令查询支持的存储引擎。
- InnoDB支持事务和外键,适合频繁的更新与删除,但读写效率较差,空间占用大。
- MyISAM不支持事务和外键,锁级别为表锁,INSERT和UPDATE操作需要锁定整个表。
- MEMORY表数据存储在内存中,速度快,默认使用Hash索引,也可改为B型树索引。
- Archive表采用zlib格式压缩存储,数据量比MyISAM小约75%,比InnoDB小约83%,不允许有索引与主键。
- 索引失效的情况包括使用OR条件、LIKE以'%'开头、列上有运算、条件中未使用引号、连接查询字段编码格式不一致等。
- 如果MySQL估计全表扫描比使用索引快,则不使用索引,连接查询中第一张表不会走索引。
❓
延伸问答
MySQL中有哪些存储引擎?
MySQL中主要的存储引擎包括InnoDB、MyISAM、MEMORY和Archive。
InnoDB存储引擎的特点是什么?
InnoDB支持事务和外键,适合频繁的更新与删除,但读写效率较差,空间占用大。
MyISAM存储引擎有什么限制?
MyISAM不支持事务和外键,锁级别为表锁,INSERT和UPDATE操作需要锁定整个表。
MEMORY表的存储方式是什么?
MEMORY表的数据存储在内存中,速度快,默认使用Hash索引,也可改为B型树索引。
索引失效的常见情况有哪些?
索引失效的情况包括使用OR条件、LIKE以'%'开头、列上有运算、条件中未使用引号等。
Archive表的存储特点是什么?
Archive表采用zlib格式压缩存储,数据量比MyISAM小约75%,比InnoDB小约83%,不允许有索引与主键。
➡️