MyISAM是无事务的并且是堆组织的。记录由表中的行偏移量标识,索引将此偏移量存储为行指针。
InnoDB支持交易并按索引组织。记录由的值标识
PRIMARY KEY(或
PRIMARYKEY未定义隐藏的内部列),并存储在中
B-Tree。二级索引将的值存储
PRIMARY KEY为行指针。
涉及全表扫描或二级索引查找的查询通常在
MyISAM表上更快。
涉及
PRIMARY KEY查找的查询通常在
InnoDB表上更快。
MyISAM表在表的元数据中存储表中的记录数,这就是为什么这样的查询:
SELECt COUNT(*)FROM myisamtable
瞬间。
MyISAM表完全锁定在
DML操作上(有几个例外)。
InnoDB表锁定单个记录和索引间隙,但是这些是记录和扫描的间隙,而不仅仅是
WHERe条件匹配的记录和间隙。尽管它们不匹配,但这可能导致记录被锁定。
InnoDB表支持参照完整性
FOREIGN KEY。
MyISAM桌子没有。
有几种情况可以显示两种引擎的优势。



