国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

聊一聊如何利用索引提高性能

发布时间:2019/09/19标签:   索引    点击量:

原标题:聊一聊如何利用索引提高性能
在关联数据库中,表中数据广泛以无序的状况存储在磁盘上,在没有响应索引时,若要对表中数据停止查问,就只能全表检索,将全部记载挨个读取,而后和查问前提停止比拟,明显,这类方法会招致大批的磁盘 I/O 操纵和 CPU 盘算,耗费大批的体系时光,因而,树立索引就成了一个必需斟酌的选项。应用 CREATE INDEX [索引名] on 表名 (列名,……) 语句能够为表中数据树立最罕用的键值索引,而键值索引的完成多数采纳 B+ 树数据构造,它有以下一些性子:1、 是一棵均衡树,即从根节点到叶子节点的深度相差不超越 1;2、 非叶子节点只保留键值和指向子节点的指针,不保留数据;3、 叶子节点保留键值、对应记载的地点及叶子节点的链表指针,链表中叶子节点是键值有序的但这些性子就必定能保障查问机能满意用户的需要吗?上面,咱们以对银行账户停止时光段查问为例,探究索引的机能成绩。为了便利阐明成绩,咱们在这里把 B+ 树简化为 3 叉 B+ 树,以账号和买卖日期作为键值,以下图所示:

如何利用索引提高性能
假如咱们要查问账号 A002 从 2000-01-01 到 2000-01-07 的买卖流水,数据库体系会起首要查找账号为 A002、日期不早于 2000-01-01 的键值地点的叶子节点,成果是顺次读取索引块 A、B、C,而后找出索引块 C 中满意前提的键值对应的记载地点并读出记载前往,若索引块 C 中最初一个日期早于或即是 2001-01-07,则能够依据叶子节点的链表间接读取索引列 D,以此类推,直到某个索引块的某个日期比 2001-01-07 大为止。观看上述进程,咱们发觉 2000-01-01 对应的记载在数据页 1,2000-01-02 和 2000-01-03 对应的记载在数据页 2,2000-01-04 对应的记载则在数据页 3,4 笔记录须要读取 3 个数据页,极其情形下乃至恣意一笔记录都在差别的数据页,而此时假如数据区中记载已按键值序存储则能够明显增加磁盘 IO。更进一步,假如记载数据间接保留在叶子节点,则能够增加查问进程中索引页与数据页之间的跳读,这关于机器硬盘的机能影响尤甚。这些成绩关于集算器的组表来讲,能够十分轻松地失掉处理。咱们仍是以股票买卖数据为例讲授组表的应用。
如何利用索引提高性能
A2: 创立数据构造为 (sid,tdate,open,close,volume) 的组表,且指定 sid 和 tdate 为键,@r 指定命据按行存储A5: 将按 sid 和 tdate 有序的数据追加到组表中A6: 以 sid 和 tdate 为键值树立索引 idx1

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号