Sqlserver 高级篇 理解存储原理 (数据库页概念)
接上一篇 我们理解了 数据存储 页的概念
我们说一下 堆
如果我们有大量数据 也就有的大量的页 存在数据库里
数据库会有一种页来记录数据存储在哪里 (叫IAM索引分布映像页)
这个页什么意思那 假如 有1000条数据 存储到了 表里
这个表生成了32个页 那就是 正好4个区 IAM就会存储 那些数据存储到了那个区
举栗子 如果我把数据都删掉 重新 插入300条
IAM记录 这300条 会插入到100这个区里 状态为1 1区满了
如果再来300条 就会记录 都存101了 102还有地方
如果 删除掉 第一次插入的300条 IAM里100区就变成0 下次存储的数据 就会到100里来
所以 我们查询数据的时候 先查IAM索引表 在去查 区 在去查页 ~
这种没有按照任何条件排序要求(没有索引)来存储数据的方式 就叫 堆 有地方我就放 堆一起去
所以 查询的时候 数据库 需要遍历所有IAM页 所有的区 所有页 查询数据 因为数据是堆在一起的
IAM表也有最大数据量限制 限制是4G
如果数据量超过4G 就会在出现一个IAM页
第一个IAM页会记录第二个IAM页位置信息 连贯起来 所以 找到第一个IAM页 后面一切都能找到
理论就这么多
那么怎么在sqlserver 里看到IAM页
indid 为0 就是没有索引
select * from sys.sysindexes where id=
(select object_id From sys.all_objects where name='TStudent')
看了这一篇 知道为什么不加索引 你的数据查询起来会卡把!!!!!