索引:数据结构指向数据
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。
提取句子主干,就可以得到索引的本质:索引是一种数据结构。
索引:数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构就是索引
InnoDB的辅助索引data域存储相应记录主键的值而不是地址
MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。
索引属于结构优化
不建议建索引的情况(索引文件本身要消耗存储空间,同时索引会加重插入、删除和修改记录时的负担,
另外,MySQL在运行时也要消耗资源维护索引)
第一种情况是表记录比较少
第二种选择性较低(选择性:不重复的索引值)
在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。(最好设置自增的字段)
1.聚集索引不仅仅是一种单独的索引类型,
而且是一种存储数据的方式。
Innodb引擎的聚集索引实际上在同样的结构中保存了B-Tree索引和数据行。
表有聚集索引时,它的数据行实际上保存在索引的叶子上。注意是存储引擎来实现索引
主键 唯一键 外键 索引
A:主键一定是唯一键,但唯一键不一定是主键
B:b表的一个字段是a表的主键,那么b就是a的外键 (b表的外键,指向的就是 a表的主键)
主键:能够唯一标识表中某一行的属性或属性组。
一个表只能有一个主键,但可以有多个候选索引。
主键常常与外键构成参照完整性约束,防止出现数据不一致。
主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
外键
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。
提取句子主干,就可以得到索引的本质:索引是一种数据结构。
索引:数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构就是索引
InnoDB的辅助索引data域存储相应记录主键的值而不是地址
MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
MySQL的优化主要分为结构优化(Scheme optimization)和查询优化(Query optimization)。
索引属于结构优化
不建议建索引的情况(索引文件本身要消耗存储空间,同时索引会加重插入、删除和修改记录时的负担,
另外,MySQL在运行时也要消耗资源维护索引)
第一种情况是表记录比较少
第二种选择性较低(选择性:不重复的索引值)
在使用InnoDB存储引擎时,如果没有特别的需要,请永远使用一个与业务无关的自增字段作为主键。(最好设置自增的字段)
1.聚集索引不仅仅是一种单独的索引类型,
而且是一种存储数据的方式。
Innodb引擎的聚集索引实际上在同样的结构中保存了B-Tree索引和数据行。
表有聚集索引时,它的数据行实际上保存在索引的叶子上。注意是存储引擎来实现索引
主键 唯一键 外键 索引
A:主键一定是唯一键,但唯一键不一定是主键
B:b表的一个字段是a表的主键,那么b就是a的外键 (b表的外键,指向的就是 a表的主键)
主键:能够唯一标识表中某一行的属性或属性组。
一个表只能有一个主键,但可以有多个候选索引。
主键常常与外键构成参照完整性约束,防止出现数据不一致。
主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
外键