当前位置: 首页 > news >正文

网站设计师联盟北京做网络工程公司的网站

网站设计师联盟,北京做网络工程公司的网站,深圳网站建设网站设计软文推广,项目网络图最早开始时间索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。 不同的引擎对于索引有不同的支持#xff1a;Innodb和MyISAM默认的索引是Btree索引#xff1b;而Mermory默认的索引是Hash索引。 Hash索引 哈希索引包含以数组形式组织的 Bucket 集合。 哈希函数将索…索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。 不同的引擎对于索引有不同的支持Innodb和MyISAM默认的索引是Btree索引而Mermory默认的索引是Hash索引。   Hash索引 哈希索引包含以数组形式组织的 Bucket 集合。 哈希函数将索引键映射到哈希索引中对应的 Bucket。 下图展示映射到哈希索引中三个不同 Bucket 的三个索引键。 出于演示目的哈希函数的名称为 f(x)。 用于哈希索引的哈希函数具有以下特征 SQL Server 拥有一个用于所有哈希索引的哈希函数。 哈希函数具有确定性。 同一索引键始终映射到哈希索引中的同一 Bucket。 多个索引键可能映射到同一个哈希 Bucket。 哈希函数经过均衡处理这意味着索引键值在哈希桶上的分布通常符合泊松分布。 泊松分布并非均匀分布。 索引键值并非均匀地分布在哈希 Bucket中。 例如泊松分布的 n 非重复索引键通过 n 哈希桶中约三分之一空存储桶包含一个索引键则存储桶的三分之一的结果和其他第三个包含两个索引键。 少量 Bucket 将包含两个以上的键。 如果两个索引键映射到同一个哈希 Bucket则产生哈希冲突。 大量哈希冲突可影响读取操作的性能。 内存哈希索引结构包含一个内存指针数组。 每个 Bucket 映射到该数组中的一个偏移位置。 数组中的每个 Bucket 指向该哈希 Bucket 中的第一行。 Bucket 中的每行指向下行因而形成了每个哈希 Bucket 的行链如下图所示。 该图有三个包含行的 Bucket。 顶部的第二个 Bucket 包含三个红色行。 第四个 Bucket 包含一个蓝色行。 底部的 Bucket 包含两个绿色行。 这些可能是同一行的不同版本。   所谓Hash索引当我们要给某张表某列增加索引时将这张表的这一列进行哈希算法计算得到哈希值排序在哈希数组上。所以Hash索引可以一次定位其效率很高而Btree索引需要经过多次的磁盘IO但是innodb和myisam之所以没有采用它是因为它存在着好多缺点 1、因为Hash索引比较的是经过Hash计算的值所以只能进行等式比较不能用于范围查询 1、每次都要全表扫描 2、由于哈希值是按照顺序排列的但是哈希值映射的真正数据在哈希表中就不一定按照顺序排列所以无法利用Hash索引来加速任何排序操作 3、不能用部分索引键来搜索因为组合索引在计算哈希值的时候是一起计算的。 4、当哈希值大量重复且数据量非常大时其检索效率并没有Btree索引高的。   Btree索引 至于Btree索引它是以B树为存储结构实现的。 但是Btree索引的存储结构在Innodb和MyISAM中有很大区别。 在MyISAM中我们如果要对某张表的某列建立Btree索引的话如图   所以我们经常会说MyISAM中数据文件和索引文件是分开的。 因此MyISAM的索引方式也称为非聚集Innodb的索引方式成为聚集索引。 至于辅助索引类似于主索引唯一区别就是主索引上的值不能重复而辅助索引可以重复。       因此当我们根据Btree索引去搜索的时候若key存在在data域找到其地址然后根据地址去表中查找数据记录。 至于Innodb它跟上面又有很大不同它的叶子节点存储的并不是表的地址而是数据         我们可以看到这里并没有将地址放入叶子节点而是直接放入了对应的数据这也就是我们平常说到的Innodb的索引文件就是数据文件   那么对于Innodb的辅助索引结构跟主索引也相差很多如图       我们可以发现这里叶子节点存储的是主键的信息所以我们在利用辅助索引的时候检索到主键信息然后再通过主键去主索引中定位表中的数据这就可以说明Innodb中主键之所以不宜用过长的字段由于所有的辅助索引都包含主索引所以很容易让辅助索引变得庞大。 我们还可以发现在Innodb中尽量使用自增的主键这样每次增加数据时只需要在后面添加即可非单调的主键在插入时会需要维持Btree特性而进行分裂调整十分低效。     Btree索引中的最左匹配原则 Btree是按照从左到右的顺序来建立搜索树的。比如索引是(name,age,sex)会先检查name字段如果name字段相同再去检查后两个字段。 所以当传进来的是后两个字段的数据agesex因为建立搜索树的时候是按照第一个字段建立的所以必须根据name字段才能知道下一个字段去哪里查询。 所以传进来的是namesex时首先会根据name指定搜索方向但是第二个字段缺失所以将name字段正确的都找到后然后才会去匹配sex的数据。   建立索引的规则 1、利用最左前缀Mysql会一直向右查找直到遇到范围操作like、between就停止匹配。比如a1 and b2 and c3 and d6此时如果建立了a,b,c,d索引那么后面的d索引是完全没有用到当换成了a,b,d,c就可以用到。 2、不能过度索引在修改表内容的时候索引必须更新或者重构所以索引过多时会消耗更多的时间。 3、尽量扩展索引而不要新建索引 4、最适合的索引的列是出现在where子句中的列或连接子句中指定的列。 5、不同值较少的列不必要建立索引性别。     转载自http://blog.csdn.net/u014307117/article/details/47325091 转载于:https://www.cnblogs.com/hedeyong/p/8044519.html
http://wiki.neutronadmin.com/news/246129/

相关文章:

  • 郑州网站优化推广培训wordpress 安装百度编辑器
  • 湖南省建设工程造价管理总站网站网站做哪块简单
  • 建网站外包嵌入式培训总结
  • 网站建设的销售是怎么样的做网站维护
  • 搜狐快站做淘宝客网站电子商务网站建设定位设想
  • 2008r2做网站怎么查询网站备案
  • 产品服务展示型网站有哪些网站 被黑
  • 手机网站建设行业分析三角镇建网站公司
  • 湖州网站建设方案个人营销网站
  • 计算机多媒体毕业设计网站建设长春做网站用的软件
  • 纯静态网站开发wordpress 怎么登陆地址
  • 接网站开发外包不收费的小说网站排名
  • 微盟如何做网站德州网站设计
  • 网站用户访问统计网站html5自适应屏幕大小
  • 山东seo网站开发app代驾软件多少钱
  • 图片制作软件怎么制作360seo排名点击软件
  • 河南网站搭建免费杂志模板
  • 南充网站设计学校怎么做网络平台
  • 温岭网站建设珠海网站制作首页
  • 什么网站发布任务有人做有哪些搜索引擎网站
  • 洛阳建站室内设计要学哪些科目
  • 网站建设的后期维护费用wordpress目录绑定外部链接
  • 佛山免费发布信息的网站长沙有哪些做网站的公司
  • 公众号开发者多次群发wordpress路径优化
  • 比较出名的设计网站免费好用的crm系统
  • 免费的网站登录模板下载手机定制app
  • 网站建设 温州房产公司网站建设方案ppt
  • 做程序的网站视差 长沙做网站
  • 淘宝网站都是怎么做的吗免费行情网站app大全下载
  • 做网站和程序员哪个好点如何自己制作链接内容