专做立体化的网站免费不良正能量网站链接
- 作者: 五速梦信息网
- 时间: 2026年04月20日 05:02
当前位置: 首页 > news >正文
专做立体化的网站,免费不良正能量网站链接,做海报免费素材网站有哪些,拼多多采用了哪些网络营销方式MySQL索引总结 1.索引的概念、作用与使用场景 本质上就是减少读写磁盘的次数。 索引是一种特殊的文件#xff0c;包含这对数据表中所有记录的引用指针#xff0c;可以对表中的一列或多列创建索引#xff0c;并指定索引的类型#xff0c;每种类型都有对应数据结构实现。 …MySQL索引总结 1.索引的概念、作用与使用场景 本质上就是减少读写磁盘的次数。 索引是一种特殊的文件包含这对数据表中所有记录的引用指针可以对表中的一列或多列创建索引并指定索引的类型每种类型都有对应数据结构实现。 加快查找速度常用数据库操作是增删改查但是查是最常见的增加了增删改的开销调整时还需要调整目录增加了空间的开销还需要额外的空间保存索引 一般对数据库表的某列或某几列创建索引需要考虑以下几点 数据量比较大并且经常对他们进行条件查询这些表的插入操作和这个列的修改频率较低索引占用的额外空间 注意加上索引不一定快 当数据量很少一行一行查可能会更快 另外如果对大量重复数据加索引也是无法提高查询速度。例如都是性别字段大学里的年级字段 索引创建好之后不需要手动创建直接查询的时候就会自动走索引。 SQL是通过数据库的执行引擎来执行的执行引擎会自动评估哪种方案是成本最低的速度最快的。 具体某次查询是走的索引还是不走可以通过explain关键字显示查询过程中具体情况。不过使用比较简单复杂的是分析暂存疑问怎么分析explain执行的结果 //eg: explain select * from student;2.索引的使用方法 查看索引 show index from 表名;容易发现我们并未手动添加索引但是也能查询的到 这是因为创建主键约束唯一约束和外键约束时数据库会自动创建对应列的索引。 创建索引 针对非主键非唯一约束非外键字段可以创建普通索引 create index 索引名 on 表名;注意创建索引最好是在创建表的时候就把索引弄好。否则如果针对一个可能有很多记录的表创建索引是一个危险操作。中途创建可能吃掉大量磁盘io花掉很长时间这段时间数据库是不能正常使用的。 例如针对学生姓名创建索引 删除索引 drop index 索引名 on 表名;注意删除索引也可能吃掉大量磁盘IO也是比较危险的操作 例如删除刚刚创建的索引 3.索引在MySQL中数据结构 索引本质是就是通过已知信息查找相关完整信息那么我们知道的数据结构中关于查找的有哈希表、二叉搜索树、N叉搜索树和B树。 但MySQL中InnoDB引擎中使用的是B树。 为什么这个数据引擎不使用前三种下边是可能的考量因素 Why not 哈希表 哈希表是一种查询开销为O(1)的数据结构但是哈希表不适合做数据库的索引。 因为哈希表只能比较相等而不能进行这样的范围查询而进行数据库查询时经常会有这样的场景例如查找id大于0小于10的用户信息。 二叉搜索树 二叉搜索树的前序遍历是有序的可以进行范围查询但是因为当二叉搜索树元素个数很多或者节点分布不均匀时树的高度就会比较高对应的时间复杂度就可能达到O(N)元素比较的次数就会比较多而数据库进行比较都是要读硬盘的这样效率就会比较低。 N叉搜索树 顾名思义N叉搜索树就是每个节点最多有N个孩子节点的搜索树分叉变多树的高度是降下来了。其中最典型的实现就是B树 因为节点是存储在硬盘上的如果采用B树的方式存索引的话树的高度降低比较的次数虽然没有显著减少一个节点可能需要比较多次但是读写硬盘的次数能减少。 但是MySQL中没有使用B树因为实际开发中对性能的要求比较高所以使用的就是B树。 Why B树 B树也是一个N叉搜索树是B树的plus版本。 它具有以下特点 每个节点可能存在N个keyN个key值划分出N个区间最后一个key就是当前区间的右边界也就是最大值父元素的key值会在子元素中重复出现并且是以最大值的姿态出现的。这样的重复出现就会使得叶子结点中包含所有数据的全集非叶子结点的所有值都会在叶子结点中体现出来。叶子结点会以类似于链表连接起来。 这些特点使得B树具有相较于前边几种数据结构不具有的优势 更适合范围查询树的高度降下来之后比较的次数减少磁盘IO的次数也就减少了每个数据查询的时间开销比较均匀。因为所有的查询都是要落在叶子结点上的所以不管查询那个数据比较的次数都差不多。空间开销会减少。由于所有的key都会在叶子结点中体现所以非叶子节点中并不需要存储真实的数据行只需要存储索引的值而数据行存储在叶子结点上。这样当数据量非常大的时候成本可以降低。 因此既可以满足MySQL索引的功能需求也能满足它的性能要求所以用B树做MySQL的索引的数据结构 无索引和多索引的情况 无索引的时候应该是以表的形式组织表这样的结构的 单索引的时候很大概率是以上述的B树进行组织的以学生表为例 而多索引时会创建多个B树以学生表中有主键索引和姓名索引自定义索引为例。 这时会构造两个B树一个是类似上边的通过主键创建B树叶子结点是真实的数据行另一个是通过自定义索引创建B树叶子结点是主键id。因此通过非主键列查询数据行的时候会先查一遍索引列的B树再查一遍主键列的B树。这个操作叫做回表。 提醒 关于索引建议在最开始的时候就规划好如果是已经有大量数据再进行操作就需要慎重考虑 是真实的数据行另一个是通过自定义索引创建B树叶子结点是主键id。因此通过非主键列查询数据行的时候会先查一遍索引列的B树再查一遍主键列的B树。这个操作叫做回表。
- 上一篇: 专做恐怖片的网站广州百度关键词排名
- 下一篇: 专做男装的网站南乐网站建设电话
相关文章
-
专做恐怖片的网站广州百度关键词排名
专做恐怖片的网站广州百度关键词排名
- 技术栈
- 2026年04月20日
-
专做国际时事评论网站wordpress 函数大全
专做国际时事评论网站wordpress 函数大全
- 技术栈
- 2026年04月20日
-
专做服装的网站免费全能空间
专做服装的网站免费全能空间
- 技术栈
- 2026年04月20日
-
专做男装的网站南乐网站建设电话
专做男装的网站南乐网站建设电话
- 技术栈
- 2026年04月20日
-
专做女装的网站智慧团建手机登录入口电脑版
专做女装的网站智慧团建手机登录入口电脑版
- 技术栈
- 2026年04月20日
-
专做企业的p2p网站重庆网站建设外包
专做企业的p2p网站重庆网站建设外包
- 技术栈
- 2026年04月20日






