Mysql 学习-索引的设计原则

索引的设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍。高效的索引对获的良好性能非常重要。设计索引是,应该考虑一下准则:

  (1)索引并非语讹夺越好,若一个表中有大量索引,不仅占用磁盘空间,而且会影响Insert/delete/update等语句的性能,因为当表中的数据更改同时,索引也会进行调整和更新。

  (2)避免对经常更新的表最好不要使用索引,并且索引中的列尽可能少,而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段。

  (3)数据量小的表最好不要使用索引,由于数据比较少,查询花费的时间肯能比遍历索引的时间还要短,索引可能不会产生优化的效果。

  (4)在条件表达式中进程用的的不同值较多的列上建立索引,在不同值很少的列上不要建立索引。比如在一个表的“性别”列上建立索引。弱国建立索引不但不会提高查询效率,反而会严重降低数据的更新速度。

  (5)当唯一性是某种数据本身的特征时,指定唯一索引。使用唯一索引需能确保定义的列的数据完整性,以提高查询速度。

  (6)在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引,弱国待排序的列有多个,可以在这些列上建立组合索引。

稿源:七星互联Qixoo.com

时间: 2024-10-13 12:33:22

Mysql 学习-索引的设计原则的相关文章

MySQL数据库索引的设计原则

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引. 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录.例如,学生表中学号是具有唯一性的字段.为该字段建立唯一性索引可以很快的确定某个学生的信息.如果使用姓名的话,可能存在同名现象,从而降低查询速度. 2.为经常需要排序.分组和联合操作的字段建立索引 经常需要ORDER BY.GROUP BY.DISTINCT和UNION等操作的字段,排序操作会浪费很多时间.如果为其建立索引,可

【我的《冒号课堂》学习笔记】设计原则(2)依赖原则

依赖原则 间接原则有一个直接的推论,就是依赖反转原则(Dependency Inversion Principle),简称DIP.依赖反转原则就是高层模块不应依赖低层模块,它们都应依赖抽象:抽象不应依赖细节,细节应依赖抽象. 1)DIP的产生背景 从代码实现的角度来看,高层模块依赖低层模块是很正常的.而且高层模块与低层模块之间往往是决策(policy)与机制(mechanism)之间的关系,高层决策以低层机制为基础,逻辑上似乎也很合理.然而从软件设计上的角度看,这种依赖性却是非常不合理的.依赖通

mysql学习之数据库设计

1 MySql数据库建模过程 需求分析阶段:分析客户的业务和处理需求 概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整 详细设计阶段:应用三大范式审核数据表结构 代码编写阶段:物理实现数据库,编码实现应用 软件测试阶段:.... 安装部署:... 2设计数据库的步骤1了解需求:与该系统有关人员进行交流.座谈,充分了解用户需求,理解数据库需要完成的任务 2标识实体:标识数据库要管理的关键对象或实体(名词) 3标识每个实体的属性(名词) 4标识实体之间的关系(动词) 在E-R图中,实

数据库索引的设计原则

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引.那么索引设计原则又是怎样的? 建表时一定要有主键,如果相关列可以作为主键,做一个无关列 1.选择的唯一性 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录.例如,学生表中学号是具有唯一性的字段.为该字段建立唯一性索引可以很快的确定某个学生的信息.如果使用姓名的话,可能存在同名现象,从而降低查询速度. 主键索引和唯一键索引,在查询中使用是效率最高的. 注意:如果重复值较多,可以考虑采用联合索引 2

设计模式学习笔记之设计原则

利用继承来提供对象的行为,会导致: 1.代码在多个子类中重复                            2.很难知道所有鸭子的全部行为 3.运行时的行为不易改变                            4.改变会牵一发而动全身,造成其他鸭子不想要的改变   设计原则 1 :找出应用之中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起. 注释:把会变化的部分取出并“封装”起来,以便以后可以轻易的改动或者扩充此部分,好让其他部分不受影响.代码变化引起的不

【我的《冒号课堂》学习笔记】设计原则(1)间接原则

间接原则 All problems in computer science can be solved by another level of indirection, except of course for the problem of too many indirections. ——David Wheeler 这是一句计算机界的名言.在计算机领域中这样的例子数不胜数,像文件系统中的路径path,HTTP中的URI.数据库中的外键foreign key.程序中的变量均具有间接指代作业. 先

【我的《冒号课堂》学习笔记】设计原则(3)内聚原则

内聚原则 “高内聚,低耦合”原则是软件模块设计的通用原则.实际上,该原则最早出现在结构化设计(structured design)中,后被引入对象式设计.耦合和内聚是衡量软件设计质量的两个重要指标,是检验模块设计是否合理的主要标准.其中,耦合(coupling)反映模块之间的关联程度,内聚(cohesion)反映模块内部的关联强度. 以上是常见的耦合类型和内聚类型.模块化的目的是把一个复杂的系统分解成几个相对独立简单.具有特定功能的软件组件,以便分开管理.模块职责单一而明确,关系简单清晰就是遵循

mysql 学习 - 索引深度理解

使用索引的代价 在熟悉了B+树索引原理之后,本篇文章的主题是唠叨如何更好的使用索引,虽然索引是个好东西,可不能乱建,在介绍如何更好的使用索引之前先要了解一下使用这玩意儿的代价,它在空间和时间上都会拖后腿: 空间上的代价: 这个是显而易见的,每建立一个索引都要为它建立一棵B+树,每一棵B+树的每一个节点都是一个数据页,一个页默认会占用16KB的存储空间,一棵很大的B+树由许多数据页组成 时间上的代价: 每次对表中的数据进行增.删.改操作时,都需要去修改各个B+树索引.而且我们讲过,B+树每层节点都

mysql数据库关系表设计原则

https://blog.csdn.net/qq_36432666/article/details/78934073 https://kb.cnblogs.com/page/138526/ http://blog.sina.com.cn/s/blog_a29f7cb50101jr5d.html https://www.cnblogs.com/mjbrian/p/6841226.html https://blog.csdn.net/persistencequxi/article/details/7