1 / 26

关于索引

关于索引. 索 引. RDBMS 中索引一般采用 B+ 树、 HASH 索引来实现 B+ 树索引具有动态平衡的优点 HASH 索引具有查找速度快的特点 索引是关系数据库的内部实现技术,属于内模式的范畴 CREATE INDEX 语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引 采用 B+ 树,还是 HASH 索引则由具体的 RDBMS 来决定. An Introduction to Database System. 一、建立索引. 语句格式 CREATE [UNIQUE] [CLUSTER] INDEX < 索引名 >

Download Presentation

关于索引

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 关于索引

  2. 索 引 RDBMS中索引一般采用B+树、HASH索引来实现 B+树索引具有动态平衡的优点 HASH索引具有查找速度快的特点 索引是关系数据库的内部实现技术,属于内模式的范畴 CREATE INDEX语句定义索引时,可以定义索引是唯一索引、非唯一索引或聚簇索引 采用B+树,还是HASH索引则由具体的RDBMS来决定 An Introduction to Database System

  3. 一、建立索引 语句格式 CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…); <表名>:要建索引的基本表名字 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔 <次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE:此索引的每一个索引值只对应唯一的数据记录 CLUSTER:表示要建立的索引是聚簇索引,索引项的顺序与表中记录的物理顺序一致的索引组织 An Introduction to Database System

  4. 建立索引(续) [例13] CREATE CLUSTER INDEX Stusage ON Student(Sage); 在Student表的Sage(年龄)列上建立一个聚簇索引,而且Student表中的记录将按照Sage值的升序存放。 在最经常查询的列上建立聚簇索引以提高查询效率 一个基本表上最多只能建立一个聚簇索引 经常更新的列不宜建立聚簇索引 An Introduction to Database System

  5. Kingbase中创建cluster索引 • 在Student表的Sage(年龄)列上建立一个普通索引 • CREATE INDEX Stusage ON Student(Sage); • 根据普通索引Stusage建立簇索引 • CLUSTER Stusage ON Student;

  6. 建立索引(续) [例14] 为学生-课程数据库中的Student,Course,SC三个表建立索引。 其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX Stusname ON Student(Sname); CREATE UNIQUE INDEX Coucname ON Course(Cname); An Introduction to Database System

  7. 建立索引(续) [例14] 为学生-课程数据库中的Student,Course,SC三个表建立索引。 其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号和课程号建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno,Cno); An Introduction to Database System

  8. 二、删除索引 DROP INDEX <索引名>; 删除索引时,系统会从数据字典中删去有关该索引的 描述。 [例15] 删除Student表的Stusname索引 DROP INDEX Stusname; An Introduction to Database System

  9. 10 30 50 70 90 20 40 60 80 100 顺序文件上的索引 Sequential File 按照某个属性排序的文件 Sequential File

  10. 10 90 70 50 30 110 80 60 40 100 120 20 70 90 50 10 30 40 100 80 20 60 稠密索引(Dense Index) One item for each Record Item: (Search key, pointer to record) Sequential File

  11. B树和B+树 • B树 • 能自动保持与数据文件大小适应的索引层次 • 平衡树 • 能对所使用的存储空间进行管理,使每个块处于全满半满之间 • B+树 • 特殊的B树,内部结点只存储索引块 • 叶结点用指针连接

  12. 典型的非叶结点 指向码值K≥43 指向码值31≤K<43 指向码值K < 23 指向码值23≤K<31 典型的叶结点 指向顺序集上的下一个叶结点 指向码值为41的记录 指向码值为31的记录 指向码值为37的记录 4.3.1 B+树 参数 n=3: 每个块存放码值的最大个数:3 最小码数:m 最小指针数:p

  13. B+树指针和码的数量

  14. B+树中的查找 13 < 37 查找键为37的记录 31<37<43 找到37 键值为37的记录 IO数:4 若把第一、第二层结点保存在缓冲区IO数:2 An Introduction to Database System

  15. B+树中的查找(若索引块全在磁盘) 查找键为37的记录 读入root节点,IO=1 根据条件13 < 37,读取下一 节点块 读入下一节点,IO=2 根据条件31<37<43, 读取下一节点块 Main Memory 读入下一节点,IO=3,找到 键值37,读取记录指针, 读取记录所在的块 Disk 读入数据块,IO=4,根据记 录指针找到键值为37的记录 An Introduction to Database System

  16. B+树中的查找(若第一、二层索引块在内存) 查找键为37的记录 读取root节点, 根据条件 13 < 37,读取下一节点块 读取下一节点,根据条件 31<37<43,读取下一节点块 Main Memory 读入下一节点,IO=1,找到 键值37,读取记录指针, 读取记录所在的块 Disk 读入数据块,IO=2,根据记 录指针找到键值为37的记录 An Introduction to Database System

  17. B+树的插入 三种情况:

  18. B+树的插入 3. 码中间值上提 40 2. 码中间值上提 分裂内部结点 (40,b) 插入码40(属于情况3) 1. 分裂叶结点

  19. B+树的插入 插入码40(属于情况3) 3. 码中间值上提 13>40 2. 码中间值上提 分裂内部结点 43 31<40<43 叶结点满 41 1. 分裂叶结点 40 40

  20. B+树的删除 三种情况:

  21. B+树的删除 2. 更改内部结点以反映这种改变 5 1. 组合叶结点 5 删除码7(属于情况2)

  22. B+树的删除-删除码7 7<13 2. 更改内部结点以反映这种改变 43 7 5 7<=7 1. 组合叶结点 5 7 41 删除码7(属于情况2)

  23. B+树的删除 23 2. 更改内部结点以反映这种改变 (需要递归) 31 43 13 1. 组合叶结点 5 删除码11(属于情况3,需要递归更改内部结点)

  24. B+树的删除-删除码11 13 11<13 2. 更改内部结点以反映这种改变 23 31 43 5 13 5<11 1. 组合叶结点 5 11 41 删除码11(属于情况3,需要递归更改内部结点)

  25. B+树的效率 • 查询效率 • B树的层数+1(数据)-1(根结点驻内存) • 一般2-3层: 100+4n+8(n+1)<=4096, n=332, 取255 255×255×255=1658万条记录 • 插入效率 • 实际情况下,因为插入导致重组B树的情况很少 • 删除效率 • 一种可选实现:不对删除做修改 • 记录的删除标记:使用叶结点中指向记录的指针

More Related