排好序的数据结构
存在一直或者多种规律的数据集合
所以B+ 树是一种数据结构,Mysql的索引是默认用B+树实现的
除了b+树索引外,还有hash索引,使用hash表去实现<key,value>,对于每一行数据,存储引擎都会对所有的索引列计算出一个hash code,将hash code 存放在索引中作为key,同时将数据行的地址存储在 value中。
Mysql中只有,Memory 引擎显示的支持哈希索引。这也就是Memory 的默认索引类型,也可以支持b tree 索引。值得注意,Memory
支持的为非唯一 哈希索引的,这在数据库中与众不同,如果多列 计算出的hash相同,索引会以链表的方式存放在多个记录指针的同一根哈希条目在,也就是说很想jdk 1.7 及之前的 JAVA中 HashMap 存储方式,数组+每个数组下标后面链接链表的方式。
主键:数据表建立时,如果没设置主键,mysql默认会设置一个隐式的主键
如果没有主动设置主键,就会选一个不包含NULL的第一个唯一索引列作为主键列,
并把它用作一个聚集索引。如果没有这样的索引就会使用行号生成一个聚集索引,把它当做主键,
这个行号6bytes,自增。可以用select _rowid from table来查询
我也有点不信,实验一下吧,建立表结构 1id 好像非常不符合规范啊,,, 先看结果吧
不加唯一索引时,表示,查询不到 _rowid 这个列,查询结果👇
将id 加上unique 索引约束后👇
建立了唯一索引后,_rowid可以查询到。
因此算得出结论 ,验证成功并且数据库默认将unique 的所索引当作的主键,并且查询网上知识。↓↓ 这个博客的
如果有这存在非空唯一索引的列,自然像上面一样,而且_rowid 可以查询到。
如果没有!非空 且 !唯一索引 ,表中都没有 row_id 是查询不到的。
聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据(主键索引)
非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行(二级索引)
回表:除了主键索引,建立,其他的普通索引(二级索引)的根部叶子节点存放的值,为具体数据对应的行,指向的为一级索引(主键索引),因此如果普通索引查询到数据后会将再一次回到,主键索引去找到具体的数据。
有思维火花时再补充11
每天学习,争取早日找到工作!奥力给
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。