数据库索引的设计原则

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。
那么索引设计原则又是怎样的?
建表时一定要有主键,如果相关列可以作为主键,做一个无关列

1.选择的唯一性

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。
例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。
如果使用姓名的话,可能存在同名现象,从而降低查询速度。

主键索引和唯一键索引,在查询中使用是效率最高的。

注意:如果重复值较多,可以考虑采用联合索引

2.为经常需要排序,分组和联合操作的字段建立索引

经常需要ORDER BY、GROUP BY,join on等操作的字段,排序操作会浪费很多时间。
如果为其建立索引,可以有效地避免排序操作。

3.为常作为where查询条件的字段建立索引

如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,
为这样的字段建立索引,可以提高整个表的查询速度。
3.1 经常查询
3.2 列值的重复值少(业务层面调整)

注:如果经常作为条件的列,重复值特别多,可以建立联合索引。

4.尽量使用前缀来索引

如果索引字段的值很长,最好使用值的前缀来索引。例如,TEXT和BLOG类型的字段,进行全文检索
会很浪费时间。如果只检索字段的前面的若干个字符,这样可以提高检索速度。

------------------------以上的是重点关注的,以下是能保证则保证的--------------------

5.限制索引的数目

索引的数目不是越多越好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。
修改表时,对索引的重构和更新很麻烦。越多的索引,会使更新表变得很浪费时间。

6.删除不再使用或者很少使用的索引(percona toolkit)

表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不再需要。数据库管理
员应当定期找出这些索引,将它们删除,从而减少索引对更新操作的影响。

7.大表加索引,要在业务不繁忙期间操作

建索引原则
(1) 必须要有主键,如果没有可以做为主键条件的列,创建无关列
(2) 经常做为where条件列 order by group by join on的条件(业务:产品功能+用户行为)
(3) 最好使用唯一值多的列作为索引,如果索引列重复值较多,可以考虑使用联合索引
(4) 列值长度较长的索引列,我们建议使用前缀索引.
(5) 降低索引条目,一方面不要创建没用索引,不常使用的索引清理,percona toolkit
(6) 索引维护要避开业务繁忙期

业务:
  1.产品的功能
  2.用户的行为

原文地址:https://www.cnblogs.com/zhaijihai/p/10274884.html

时间: 2024-11-09 02:12:11

数据库索引的设计原则的相关文章

MySQL数据库索引的设计原则

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

Mysql 学习-索引的设计原则

索引的设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍.高效的索引对获的良好性能非常重要.设计索引是,应该考虑一下准则: (1)索引并非语讹夺越好,若一个表中有大量索引,不仅占用磁盘空间,而且会影响Insert/delete/update等语句的性能,因为当表中的数据更改同时,索引也会进行调整和更新. (2)避免对经常更新的表最好不要使用索引,并且索引中的列尽可能少,而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段. (3)数据量小的表最好不要使用索引,由于数据比较少,查询

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

转载——数据库创建索引的一些原则

转载自:http://blog.csdn.net/tenfyguo/article/details/3974448 一,经常被用来过滤记录的字段. 1. primary key 字段, 系统自动创建主键的索引: 2. unique kye 字段,系统自动创建对应的索引; 3. foreign key 约束所定义的作为外键的字段; 4. 在查询中用来连接表的字段; 5. 经常用来作为排序(order by 的字段)基准的字段; 二. 索引会占用磁盘空间,创建不必要的索引只会形成浪费. 三. 索引的

转!!sql server 数据库 索引的原理与应用

索引的概念 索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法. 索引是什么:数据库中的索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的信息,而不需要读完全书.在数据库中,数据库程序使用索引可以重啊到表中的数据,而不必扫描整个表.书中的目录是一个字词以及各字词所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表. 索引的利弊:查询执行的大部分开销是I/O,使用索引提高性能的一个主要目标是避免全表扫描,因

主流MVC框架的设计模式及遵守的软件设计原则

原文地址,会不断更新  http://it.zuocheng.net/mvc-design-pattern-design-principle-summary   作程的技术博客 本文以主流的MVC框架为例,比如Java 的SSH.PHP的Symfony和Zend Framework ,在简单地剖析他们的设计原理之后,找到其中使用的设计模式:鉴赏他们的代码实现,查看设计者们都遵守了哪些软件设计原则.作此文,一为学习,二为总结.其中下面所写内容可能并不全面,也可能不准确,但会不断修改完善. 框架模式

数据库设计原则(摘抄)

注:     设计数据库是实现实际业务的重要一步,合理设计表结构,规划表字段,建立合理关系为后期减少了开发,运营,维护成本.认真了解和学习设计知识是必要的,如下摘抄了部分经验总结. 1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体. 这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处

数据库设计原则(转载)

1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体.这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历表.   这就是"一张原始单证对应多个实体"的典型例子. 2. 主键

数据库设计原则[转载]

转自http://www.iteye.com/topic/281611 1. 原始单据与实体之间的关系  可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体. 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体. 这里的实体可以理解为基本表.明确这种对应关系后,对我们设计录入界面大有好处. [例1]:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表.社会关系表.工作简历