-
INNODB支持事务,而MYISAM不支持事务。
-
INNODB支持外键,而MYISAM不支持外键。
-
MYISAM中B+Tree的数据结构存储的内容是实际数据的地址值,它的索引和实际数据是分开的,只不过使用索引指向了实际数据。这种索引的模式被称为非聚集索引。
-
InnoDB 中 B+ 树的数据结构中存储的都是实际的数据,这种索引有被称为聚集索引。
关于索引:
-
唯一索引:唯一索引不允许两行具有相同的索引值。
-
主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空。
-
聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个。
-
非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于 249 个。
INNODB的非主键索引:叶子节点(最下面一层)存的是当前索引的值和主键的值(聚集索引的值),通过当前索引找到对应的主键索引(聚集索引的值)。再通过主键索引再去找到对应的数据。这样保证一致性和节省内存存储空间。
联合索引的图形:排序规则:比较每个索引的大小,先按第一个索引排大小,如果都相等,那么就看第二个索引。(从左到右),如果没有用第一个索引的话就会失效,因为跳过第一个索引的话,数据在整张表中不是有序的,那么就会扫描整表。
为什么建议INNODB的表建主键,并且推荐整型自增作为主键?
如果没有建立主键,那么mysql会从我们所建的表中选择一列数据不重复的作为B+tree的建立索引。如果没有合适的列,那么mysql会建立一个隐藏列来组织整张表的数据。所以需要自己建立一个主键就可以减少Mysql工作。整型因为效率高并且比字符串占用内存小。自增:如果不是自增会增加树的分裂和平衡旋转,那么效率就会变低。
标签:区别,聚集,索引,INNODB,MYISAM,数据,主键 From: https://www.cnblogs.com/mafu-blogs/p/17964232