- 传统文件读取和索引方式读取文件
Select * from student where id=?;
用java读取:
io流、for循环扫描,时间复杂度(n平方)
用索引:
机械硬盘:柱面、磁道、扇区
索引:
索引是帮助高效获取数据的数据结构
索引也可能是一个文件
其他类型
1、hash Map
2、二叉树
3、红黑树
为什么选取B+树,而不是上面的?
hash(1): key-value
select * from student where id>1;
一个萝卜一个坑,要查一片萝卜时?不能进行范围查找。
二叉树:二分查找法 必须是有序的。
红黑树:树高
衡量标准:
io渐进复杂度
二叉树:节点在page中不连续
b+树 每一个结点放到一个page中,一次连续的加载到内存
红黑树:树高
b树:非叶子节点
MyISAM VS Innodb
MYISAM:
一个表有三个文件:
.frm 表的定义文件:表结构
.MYD 数据文件
.MYI index文件
Innodb :
.frm
.ibd: 聚集索引
聚集索引
Select * from table where id = 1
Select * from table where name = “james”
为什么要用自增ID作为主键?
与业务无关的id作为主键。
省份证号 18位
UUID