MySQL索引采用的是B+TREE,多列联合索引是一个有序元组,其中各个元素均为数据表的一列。设一个表有M列,建一个度为n的多列联合索引,深度h = lognM,设一组索引列的大小为s,索引文件的大小可以计算为s*M*(1+M/n+M/n2+M/n3+。。。。)

SQLServer索引可以include非索引列,include的最大好处是这些列只需要在叶子节点存在,索引可以有效减小索引文件的大小,同时一个页面上可以存储更多的内节点,提高减少磁盘IO。

MySQL等数据库的索引为什么使用B+TREE而不是B-TREE,一种说法是由于B+Tree内节点去掉了data域,因此可以拥有更大的出度,拥有更好的性能。也就是说,B+Tree内节点去掉了data域,内节点占用更少的空间,一个页内可以放更多的叶子节点,因此可以拥有更大的出度。并列出出度的公式:

dmax = floor(pagesize / (keysize + datasize + pointsize))   (pagesize – dmax >= pointsize)

dmax = floor(pagesize / (keysize + datasize + pointsize)) – 1   (pagesize – dmax < pointsize)

这种解释感觉起来有点勉强,公式也觉得奇怪,出度和pagesize有什么关系呢?出度应该会有更多的考虑吧,一个1w行表的索引和100000w行表索引的出度不能设成一样吧,比如都是1000,那1w行表用索引的意义就不大了。索引又不会放到一个page上。我觉得正确的解释是这样:由于B+Tree内节点去掉了data域,这样一个页上可以存储更多的内节点,也就有可能存储多个层级的内节点(比如前3层),这样前3次索引查询只需要一次磁盘IO,和SQLServer索引可以include非索引列原理类似,只不过SQLServer做得更好罢了。

mysql 索引 lt =_MySQL索引相关相关推荐

  1. mysql多索引结构_MySQL 索引结构

    谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...

  2. mysql 索引语法_MySQL 索引:语法及案例剖析

    MySQL 索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索 ...

  3. mysql匹配数据结构_MySQL索引背后的数据结构及原理

    前两天经历了武汉一行腾讯面试,数据库索引是一个面试热点,在此搜集相关资料,以备学习之用. 下面是一位牛人写得关于数据库索引的精品之作,因为很好,不敢修饰,转载至此与博友共享. 本文以MySQL数据库为 ...

  4. mysql索引技术_MySQL索引类型

    首先请查看不同引擎支持的索引类型:存储引擎简介 . 聚集索引和非聚集索引概念见:聚集索引与非聚集索引 和 聚集索引 . 覆盖索引见:覆盖索引 . 1. InnoDB的每一个表都会有一个聚集索引(第一索 ...

  5. mysql索引别名_Mysql索引知识详谈

    1. 索引的重要性 索引之于数据表,相当于检字表于汉语字典,设想让你在没有检字表的情况下从字典中找出一个"武"字,你会多么无助,如果用检字表,我们一眼就能找出它在第509页 数据库 ...

  6. mysql索引选择_MySQL 索引选择原则

    目的 MySQL查询优化器是基于代价(cost-based)的查询方式.因此,在查询过程中,最重要的一部分是根据查询的SQL语句,依据多种索引,计算查询需要的代价,从而选择最优的索引方式生成查询计划. ...

  7. 讴 mysql 首字母_MYSQL索引

    什么是索引? 举个例子:新华字典,有目录,有正文内容.索引就相当于目录,正文内容就相当于数据. 索引有什么用? 索引用于快速查找在某列中有一特定值的行. 一条查询语句,如果没有索引,将对全表进行扫描. ...

  8. mysql 索引 二_MySql索引(二)

    所有MySQL列类型可以被索引.根据存储引擎定义每个表的最大索引数和最大索引长度. 所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节.大多数存储引擎有更高的限制. 索引的存储类型目前只 ...

  9. mysql 索引方法_mysql索引方式

    /* 所有MySQL列类型可以被索引.根据存储引擎定义每个表的最大索引数和最大索引长度. 所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节.大多数存储引擎有更高的限制. 索引的存储类型 ...

最新文章

  1. c语言顺序表有效元素长度,用C语言描述的顺序表类型
  2. python3 value查key的三种方法
  3. QT学习:多线程运用
  4. 坚果nuts 加速 官网_【喂你播】坚果手机2020新品发布会来了;三星定向华为手机推以旧换新...
  5. 关于Toad的Cannot load OCI DLL问题
  6. Hadoop MapReduce链式实践--ChainReducer
  7. 【概率论与数理统计】1.1 随机事件及其运算
  8. 全球区块链专利排行榜中国52家企业上榜
  9. 美丽的往生者-让自己慢下来(34)
  10. Freebase Data Dump结构初探
  11. 基于JavaWeb的小区物业管理系统的设计与实现
  12. roblox虚拟世界怎么做服务器,roblox虚拟世界
  13. 【BJOI2019】排兵布阵 DP
  14. Qt5鼠标移动事件 抖动问题
  15. iOS最安全?细数iOS曝过的安全漏洞|苹果|iOS|漏洞
  16. 破解mariadb数据库密码
  17. 研究生录取数据分析 Python123
  18. vue的侦听器,过滤器和过度动画的了解
  19. Go 离线安装依赖包
  20. 【硬件】机器人平台搭建

热门文章

  1. 【HDU1325】Is It A Tree?(并查集基础题)
  2. 腾讯或联姻优酷,微信嫁女模式引发互联网通婚潮流
  3. C# 温故而知新:Stream篇(六)
  4. 在恰当的地方使用MongoDB的WriteConcern.SAFE参数
  5. 美国团购网站Groupon的盈利模式
  6. HDU-5935 Car 逆推 贪心 精度
  7. thinkphp mysql 中文_耗时5天解决thinkphp连接mysql中文乱码的问题
  8. java classpath bat_tomcat启动批处理——setclasspath.bat | 学步园
  9. node 存储过程_用Node.js操作跨平台数据库Firebird
  10. node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)