innodb与myisam索引实现上的区别
时间: 2024-04-28 17:19:53 浏览: 104
InnoDB和MyISAM是两种不同的MySQL存储引擎,它们在索引实现上有以下区别:
1. InnoDB使用聚簇索引,而MyISAM使用非聚簇索引。聚簇索引的意思是数据行存储在索引中,而非聚簇索引则是将索引和数据行分开存储。这意味着在InnoDB中,主键索引和数据行存储在同一个B-tree中,而在MyISAM中,主键索引和数据行是分开存储的。
2. InnoDB的聚簇索引中,数据按照主键的顺序存储。因此,InnoDB的聚簇索引可以加速主键的查找,而非聚簇索引则需要两次IO操作才能找到数据行。
3. InnoDB的聚簇索引支持二级索引,而MyISAM的非聚簇索引则不支持。这意味着在InnoDB中,二级索引和主键索引的数据行是通过一个“回表”操作链接在一起的,而在MyISAM中,二级索引需要进行两次IO操作才能找到数据行。
4. InnoDB的聚簇索引支持行锁,而MyISAM的非聚簇索引只支持表锁。这意味着在InnoDB中,可以对单个数据行进行加锁,而在MyISAM中,需要对整张表进行加锁。
总之,InnoDB和MyISAM在索引实现上有很大的区别,这也是选择存储引擎时需要考虑的因素之一。
阅读全文