数据库索引
2016-04-06 18:05
232 查看
数据库索引:
【聚集索引】
Innodb的索引也为b+树,但它数据域存储的内容为实际的数据,其索引的key为表的主键,因此,Innodb表的数据文件本身就是主索引
(本身为主键聚集)所以,要求表必须要有主键,(MySQL会自动生成主键,若没有的话)不建议使用长的键(辅助索引数据域存储的是相应主键的值而不是地址,当以辅助索引查找时,先找到值)
【非聚集索引】
(引擎)MyIASM索引结构为b+树,其数据域存储的内容为实际的数据地址,也就是说索引和实际的数据是分开的,只不过用索引指向了它的数据<非聚集索引>
文章标题
数据库底层存储结构:
b+树 其实是b-树的一个变种
b-树类似于2,3-二分查找树,但都是有序的
引擎索引结构为b+树,其数据域存储的内容为实际的数据地址,也就是说索引和实际的数据是分开的,只不过用索引指向了它的数据<非聚集索引>
数据库索引(以下是我的一点理解):
唯一索引:不允许两行具有相同的索引值,如employee表 中,员工的姓氏若加唯一索引,则不允许同姓人出现;
主键索引:一种特殊的唯一索引,用来标识表中的每一行<自增主键,快速访问数据 主键ID 既是索引,也是约束,同时也可缓存中的键值>;(小数量的表中不建议建立索引,一般查询优化器在遍历用于搜索数据的索引时,花费时间可能比简单表的扫描还长)
全文索引:建立一个词库,在文章中查找每个词条的出现频率的位置,然后把这些信息按词库归纳,相当于建立了一个以词库为目录的索引;
哈希索引:建立在哈希表的基础上,它只是对使用了索引中的每一列的精确查找有用,(每一行,存储引擎会计算出被索引的哈希码);
【聚集索引】
Innodb的索引也为b+树,但它数据域存储的内容为实际的数据,其索引的key为表的主键,因此,Innodb表的数据文件本身就是主索引
(本身为主键聚集)所以,要求表必须要有主键,(MySQL会自动生成主键,若没有的话)不建议使用长的键(辅助索引数据域存储的是相应主键的值而不是地址,当以辅助索引查找时,先找到值)
【非聚集索引】
(引擎)MyIASM索引结构为b+树,其数据域存储的内容为实际的数据地址,也就是说索引和实际的数据是分开的,只不过用索引指向了它的数据<非聚集索引>
文章标题
数据库底层存储结构:
b+树 其实是b-树的一个变种
b-树类似于2,3-二分查找树,但都是有序的
引擎索引结构为b+树,其数据域存储的内容为实际的数据地址,也就是说索引和实际的数据是分开的,只不过用索引指向了它的数据<非聚集索引>
数据库索引(以下是我的一点理解):
唯一索引:不允许两行具有相同的索引值,如employee表 中,员工的姓氏若加唯一索引,则不允许同姓人出现;
主键索引:一种特殊的唯一索引,用来标识表中的每一行<自增主键,快速访问数据 主键ID 既是索引,也是约束,同时也可缓存中的键值>;(小数量的表中不建议建立索引,一般查询优化器在遍历用于搜索数据的索引时,花费时间可能比简单表的扫描还长)
全文索引:建立一个词库,在文章中查找每个词条的出现频率的位置,然后把这些信息按词库归纳,相当于建立了一个以词库为目录的索引;
哈希索引:建立在哈希表的基础上,它只是对使用了索引中的每一列的精确查找有用,(每一行,存储引擎会计算出被索引的哈希码);
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 数据库链接字符串查询网站
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法