字段类型

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4d6c465f-d488-4bb2-aeff-93addba63eba/Untitled.png

MyISAM 和 InnoDB 的区别

  1. InnoDB支持事务,MyISAM不支持事务。这是InnoDB替代MyISAM成为默认存储引擎的原因。
  2. InnoDB支持外键,MyISAM不支持外键。
  3. InnoDB是聚集索引,MyISAM是非聚集索引。
  4. InnoDB不保存表的行数,执行select count(*)时会扫描全表,MyISAM用一个变量保存表的行数。
  5. InnoDB最小锁粒度是行锁,MyISAM最小锁粒度是表锁。
  6. InnoDB如果没有主键或非空唯一索引,会自动生成一个6字节的主键,数据是主索引的一部分,附加索引保存的是主索引的值;MyISAM允许没有任何索引和主键的表存在,索引都是保存行的地址。

<aside> 💡 MySQL5.7以后Innodb已经支持全文索引了,所以很多把全文索引作为区别之一是不严谨的

</aside>

如果需要事务支持,选择InnoDB,否则可以考虑MyISAM

如果不需要事务,且有大量select操作,选择MyISAM

如果有大量insert和update操作,选择InnoDB

SQL 分类