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

天津网站开发贴吧芮城网站建设

天津网站开发贴吧,芮城网站建设,东莞市公司网站建设怎么样,服装网站建设规划书需求分析转载自 面试 #xff0d; 要不简单聊一下你对MySQL索引的理解#xff1f; MySQL索引#xff1f;这玩意儿还能简单聊#xff1f;明显是在挖坑#xff0c;幸好老夫早有准备#xff0c;切听我一一道来。 一、索引是什么? 索引是帮助MySQL高效获取数据的数据结构。 二、…转载自  面试 要不简单聊一下你对MySQL索引的理解 MySQL索引这玩意儿还能简单聊明显是在挖坑幸好老夫早有准备切听我一一道来。 一、索引是什么? 索引是帮助MySQL高效获取数据的数据结构。 二、索引能干什么? 索引非常关键尤其是当表中的数据量越来越大时索引对于性能的影响愈发重要。 索引能够轻易将查询性能提高好几个数量级总的来说就是可以明显的提高查询效率。 三、索引的分类? 1、从存储结构上来划分BTree索引B-Tree或BTree索引Hash索引full-index全文索引R-Tree索引。这里所描述的是索引存储时保存的形式 2、从应用层次来分普通索引唯一索引复合索引 3、根据中数据的物理顺序与键值的逻辑索引顺序关系聚集索引非聚集索引。 平时讲的索引类型一般是指在应用层次的划分。 就像手机分类安卓手机IOS手机 与 华为手机苹果手机OPPO手机一样。 普通索引即一个索引只包含单个列一个表可以有多个单列索引 唯一索引索引列的值必须唯一但允许有空值 复合索引多列值组成一个索引专门用于组合搜索其效率大于索引合并 聚簇索引(聚集索引)并不是一种单独的索引类型而是一种数据存储方式。具体细节取决于不同的实现InnoDB的聚簇索引其实就是在同一个结构中保存了B-Tree索引(技术上来说是BTree)和数据行。 非聚簇索引不是聚簇索引就是非聚簇索引 四、索引的底层实现 mysql默认存储引擎innodb只显式支持B-Tree( 从技术上来说是BTree)索引对于频繁访问的表innodb会透明建立自适应hash索引即在B树索引基础上建立hash索引可以显著提高查找效率对于客户端是透明的不可控制的隐式的。 不谈存储引擎只讨论实现(抽象) Hash索引 基于哈希表实现只有精确匹配索引所有列的查询才有效对于每一行数据存储引擎都会对所有的索引列计算一个哈希码hash code并且Hash索引将所有的哈希码存储在索引中同时在索引表中保存指向每个数据行的指针。 B-Tree索引MySQL使用BTree B-Tree能加快数据的访问速度因为存储引擎不再需要进行全表扫描来获取数据数据分布在各个节点之中。 BTree索引 是B-Tree的改进版本同时也是数据库索引索引所采用的存储结构。数据都在叶子节点上并且增加了顺序访问指针每个叶子节点都指向相邻的叶子节点的地址。相比B-Tree来说进行范围查找时只需要查找两个节点进行遍历即可。而B-Tree需要获取所有节点相比之下BTree效率更高。 结合存储引擎来讨论一般默认使用BTree 案例假设有一张学生表id为主键 idnamebirthday1Tom1996-01-012Jann1996-01-043Ray1996-01-084Michael1996-01-105Jack1996-01-136Steven1996-01-237Lily1996-01-25 在MyISAM引擎中的实现二级索引也是这样实现的 在InnoDB中的实现 五、为什么索引结构默认使用BTree而不是Hash二叉树红黑树 Btree因为B树不管叶子节点还是非叶子节点都会保存数据这样导致在非叶子节点中能保存的指针数量变少有些资料也称为扇出指针少的情况下要保存大量数据只能增加树的高度导致IO操作变多查询性能变低 Hash虽然可以快速定位但是没有顺序IO复杂度高。 二叉树树的高度不均匀不能自平衡查找效率跟数据有关树的高度并且IO代价高。 红黑树树的高度随着数据量增加而增加IO代价高。 六、为什么官方建议使用自增长主键作为索引 结合BTree的特点自增主键是连续的在插入过程中尽量减少页分裂即使要进行页分裂也只会分裂很少一部分。并且能减少数据的移动每次插入都是插入到最后。总之就是减少分裂和移动的频率。 插入连续的数据 插入非连续的数据 七、简单总结下 1、MySQL使用BTree作为索引数据结构。 2、BTree在新增数据时会根据索引指定列的值对旧的BTree做调整。 4、从物理存储结构上说B-Tree和BTree都以页(4K)来划分节点的大小但是由于BTree中中间节点不存储数据因此BTree能够在同样大小的节点中存储更多的key提高查找效率。 5、影响MySQL查找性能的主要还是磁盘IO次数大部分是磁头移动到指定磁道的时间花费。 6、MyISAM存储引擎下索引和数据存储是分离的InnoDB索引和数据存储在一起。 7、InnoDB存储引擎下索引的实现(辅助索引)全部是依赖于主索引建立的(辅助索引中叶子结点存储的并不是数据的地址还是主索引的值因此所有依赖于辅助索引的都是先根据辅助索引查到主索引再根据主索引查数据的地址)。 8、由于InnoDB索引的特性因此如果主索引不是自增的(id作主键)那么每次插入新的数据都很可能对BTree的主索引进行重整影响性能。因此尽量以自增id作为InnoDB的主索引。
http://www.sadfv.cn/news/40546/

相关文章:

  • 江西省建设工程造价管理局网站wordpress跳转移动端模板
  • 互通登录插件WordPress惠州seo外包
  • 怎么建设免费网站如何提网站建设需求
  • 电子商务网站硬件建设的核心是网站建设课程大纲
  • 淘宝客建设网站需要哪些条件阿里巴巴免费做网站
  • 智慧团建系统官方网站登录中国公司网
  • 网站开发公司排名前十wordpress新浪的图床
  • 动物摄影网站淘宝网网页版官网
  • 咸阳做网站的公司wordpress 哪个好用吗
  • 桓台网站推广wordpress 图片集插件
  • 定制做网站技术企管宝官网
  • 常州app网站手机写wordpress博客
  • 建筑工程东莞网站建设厦网站建设培训学校
  • 网站制作公司深圳番禺石碁镇
  • 玉林建设公司网站网站制作视频课程
  • 先进网站怎么查看网站的点击率
  • 怎么提升网站的流量吗软件开发项目管理系统
  • 高清视频网络服务器免费搜索引擎seo关键词优化效果
  • 企业网站建设可行性分析任务网页 调用 wordpress
  • 网站做优化需要哪些后台信息网站新闻前置审批
  • 微信小程序 网站建设盈世企业邮箱登录入口
  • 如何做网站的外部链接品牌建设ppt
  • 做调查问卷赚钱哪个网站好成都系统网站建设
  • 网站建设 镇江万达wordpress站多久有排名
  • 物流网站建设图片怎样推广一个网站
  • 惠州建设银行行号查询网站wordpress 删除自豪的
  • 建网站html5找人做网站协议
  • 长春个人网站制作学ui设计好就业吗
  • 网站权重6了该则么做优化方案保定网页模板建站
  • 五合一网站做优化好用吗网站设计流程的步骤