首先明白为什么索引会增加速度,DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。

如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。(推荐学习:MySQL视频教程)

添加索引的话,首先去索引列表中查询,而我们的索引列表是B类树的数据结构,查询的时间复杂度为O(log2N),定位到特定值得行就会非常快,所以其查询速度就会非常快。

为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?

1) B+-tree的磁盘读写代价更低

B+-tree的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。

举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针2bytes。一棵9阶B-tree(一个结点最多8个关键字)的内部结点需要2个盘快。而B+ 树内部结点只需要1个盘快。当需要把内部结点读入内存中的时候,B 树就比B+ 树多一次盘块查找时间(在磁盘中就是盘片旋转的时间)。

2) B+-tree的查询效率更加稳定

由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

索引

使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。

注意:并非所有的数据库都以相同的方式使用索引。

作为通用规则,只有当经常查询索引列中的数据时,才需要在表上创建索引。索引占用磁盘空间,并且降低添加、删除和更新行的速度。在多数情况下,索引用于数据检索的速度优势大大超过它的。

更多MySQL相关技术文章,请访问MySQL教程栏目进行学习!

hive能加快MySQL查询速度吗_建立索引可以加快表中数据查询的速度吗相关推荐

  1. mysql数据表中取几列_MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用sel ...

  2. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

  3. 数据库查询速度优化 1 建立索引

    rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cjoe%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C ...

  4. SQL 如何建立索引来加快数据库的查询

    文章目录 1. 什么是索引 2. 索引的特点 3. 索引的分类 4. 索引的设计原则 5. 创建索引 5.1. 自动创建索引 5.2. 手动创建索引 5.2.1. 创建表时创建索引 5.2.2. 在已 ...

  5. 10、mysql数据表中数据的查询(2)

    介绍一下mysql中查询的重中之重,连接查询 创建student和teacher表,表中数据如下: student teacher 交叉连接查询 查询结果是连接的几个表中满足条件的相关联的数据的交集 ...

  6. mysql查询所有姓王的信息_MySQL(4)— 数据查询

    四.数据查询(DQL) 4-1.查询指定字段 select 完整 语法: select [distinct] 字段名1 [as] [别名],字段名2 [as] [别名] from 表1 [ left ...

  7. MySQL中数据查询语句

    一.基本概念(查询语句)* ①基本语句 1."select * from 表名;",-可查询表中全部数据: 2."select 字段名 from 表名;",-可 ...

  8. mysql中用于删除数据的是什么意思_在删除关系表中数据时,要先删除主表数据再删除从表数据。_学小易找答案...

    [单选题]在MySQL中,所有存储过程的信息存放在下列哪个数据库中 [填空题]拉伸试验能测定的塑性指标有: 和 . [单选题]下面查看视图的基本信息的语句中,正确的是 [单选题]下面关于视图建立的说法 ...

  9. MYSQL数据库字段关联_MySQL数据库基础——操作关系表、连接查询

    MySQL数据库基础入门--day11 一.操作关联表 1.关联关系: 关联关系有:多对一.多对多和一对多. 一对一关联关系可以应用在以下几方面: (1)分割具有很多列的表 (2)由于安全原因而隔离表 ...

最新文章

  1. eureka多台注册中心_微服务实战系列(五)-注册中心Eureka与nacos区别
  2. 如何仅从SQL Server DateTime数据类型返回日期
  3. Android开发--RadioButton和CheckBox控件的使用
  4. 【论文笔记】CNN for NLP
  5. 解决Debian安装后中文乱码
  6. 来自Riot 的一份游戏美术教程(五):技术美术
  7. 轻量级J2EE持久层解决方案,MiniDao-PE版 1.5.4【版本发布】
  8. leetcode题解14-最长公共前缀
  9. selenium 3.0鼠标事件 (java代码)
  10. PR开场片头模板 恐怖惊悚电影侦探节目logo展示PR模板
  11. java炫酷龙卷风源码,龙卷风's Blog
  12. uniapp消息推送
  13. Boost Asio介绍
  14. 【简单封装】Android实现USB转232通讯
  15. POJ 1417 True Liars 带权并查集 + 背包
  16. 无人驾驶虚拟仿真(五)--图像处理之色彩平衡
  17. 奇偶校验的快捷判断方法---按位异或
  18. 【CTF】CTFHub------历年真题-暴力破解/word文件本质/图片修复/数据包分析一/滴答滴答/栅栏解救/磁盘恢复
  19. coreseek错误WARNING: failed to open pid_file '/usr/local/coreseek/var/log/searchd_mysql.pid'
  20. dnf服务器未响应怎么解决方法,科技知识:DNF地下城与勇士程序未响应怎么办——一招搞定...

热门文章

  1. ***CI新增记录成功后的返回值判断,是用isset还是empty
  2. UML 类之间的几种关系
  3. Netgear wndr3700v2 路由器刷OpenWrt打造全能服务器(五)SVN服务
  4. 2013 Multi-University Training Contest 9 1011 Arc of Dream
  5. UltiDev Cassini Web Server介绍
  6. 基于.net的分布式系统限流组件
  7. oninput,onpropertychange,onchange的用法和区别
  8. MySql数据库连接池
  9. PHP版本区别5与7:性能 64位 运算符 输入类型 返回类型 匿名类;7改进1.变量存储空间2.数组结构3.函数调用机制
  10. Vue安装npm长时间停留WARN deprecated request@2.88.2: request has been deprecated