时间:2021-07-01 10:21:17 帮助过:10人阅读
举个例子,修改表结构,向表中添加哈希索引,在定义索引时必须设置bucket_count的数量:
ALTER TABLE table_name ADD INDEX idx_hash_index_name HASH (index_key) WITH (BUCKET_COUNT = 64);
内存非聚集索引类似于B-Tree结构,称作Bw-Tree,是一个新型的B-Tree结构。从高层次上来看,Bw-Tree可以理解为按照Page ID组织的页面映射。
在Bw-Tree结构中,每个索引Page具有一组有序键值(该结构类似于普通的B树),键值是按照大小顺序排列的,并且索引中包含层次结构,父级别指向子级别,叶级别指向数据行。
差异是Bw-Tree可以把多个数据行连接在一起,级别中的页面指针是逻辑页面的ID,这个逻辑页面的ID实际上是页面映射表的偏移量,该映射表具有每个页面的物理地址,通过偏移量找到每个页面在内存中实际的物理地址。
在内存非聚集索引中,没有索引页的就地更新(in place update),为了实现该目的,引入了新的更新机制:
在非叶子级别中,父级别的页面中存储的键值是它指向的子级页面中的键值的最大值,并且每一行还包含该页面逻辑页ID(偏移量)。叶级数据页不仅包含键值,还包含页面的物理地址。
哈希索引包含一个由指针构成的数组,数组中的每个元组叫做一个hash bucket:
hash bucket的数量必须在索引定义时指定:
参考文档:
Index Architecture & Design
SQL Server 内存优化表的索引设计
标签:soft 有一个 连接 gui index 文档 测试 修改 应该