`
youyu4
  • 浏览: 440264 次
社区版块
存档分类
最新评论

数据库设计 -- 索引设计

 
阅读更多

数据库设计 -- 索引设计

 

什么是索引

索引就是加快检索表中数据的方法,就是为了不想扫描整个表。

 

 

索引的优点

 

  1. 大大加快查找数据的速度
  2. 建立唯一索引,保证数据表中每一行数据唯一性
  3. 进行分组和排序检索时,可以明显地减少时间

 

 

索引的缺点

 

  1. 降低增删改的速度
  2. 创建和维护索引,需要消耗我们的维护时间
  3. 索引还是需要占用到一定的物理空间的

 

 

 

索引分类

 

按索引方法分

 

  • B-Tree索引
  • Hash索引

按索引类型分

 

    主键索引:一般数据库设置为主键,就会自动加上索引。

 

    普通索引:我们常用的索引。

    CREATE INDEX indexName ON mytable(user_id(length));

    命名例子:字段名_IDX

 

    唯一索引:保证唯一性,但允许有空值

    CREATE UNIQUE INDEX indexName ON mytable(username(length));

    命名例子:字段名_UNIQUE

 

    全文索引:用于全文搜索,索引类型选择Full Text

 

    组合索引:为了进一步榨取MySQL的效率,就要考虑建立组合索引

    ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);

 

 

 

 

索引的设计原则

 

选择唯一性索引

 

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

 

 

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

 

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

 

 

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

 

       如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度。因此,为这样的字段建立索引,可以提高整个表的查询速度。

 

 

限制索引的数目

 

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

 

 

尽量使用数据量少的索引

 

       如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。

 

 

尽量使用前缀来索引

 

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

 

 

删除不再使用或者很少使用的索引

 

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

 

 

不建议加索引的情况

 

  • 重复且分布平均的字段,像sex这样的字段,只有男和女,就不需要加索引
  • 数据太少,如果只有几行数据,就不要索引了
  • 经常插入修改数据的,也不建议加索引

 

 

 

 

 

 

分享到:
评论

相关推荐

    后台管理系统数据库设计---附源码

    本资源"后台管理系统数据库设计---附源码"提供了一个采用微服务开发的后台管理系统的SQL语句源码,这对于学习和理解如何在微服务环境中进行数据库设计具有很大的价值。 首先,我们需要了解微服务架构中的数据库设计...

    数据库设计-------小型超市管理系统

    【数据库设计-------小型超市管理系统】 小型超市管理系统是一个典型的信息管理系统(MIS),广泛应用于现代社会,旨在解决员工档案、库存商品及销售的管理问题。在设计过程中,采用了结构化和面向对象两种程序设计...

    数据库设计--《网上书店系统》.doc

    如果您能提供有关数据库设计或网上书店系统的具体问题、需求或内容摘要,我将非常乐意帮助您深入探讨相关的IT概念,例如数据库模型、ER图、关系数据库管理、数据完整性、事务处理、索引优化、Web开发技术(如PHP、...

    数据库--仪器仪表管理系统

    - **索引设计**:为提高查询效率,对关键字段创建索引。 #### 五、软件功能设计 - **模块化设计**:将系统划分为多个独立的模块,每个模块负责特定的功能。 - **界面设计**:设计用户友好的图形界面,方便用户操作...

    数据库设计--驿站超市

    【数据库设计--驿站超市】是大连东软信息学院数据库课程设计的一个实例,旨在通过实践加深学生对数据库理论和应用的理解。在这个小型超市管理系统的设计中,学生们经历了完整的数据库开发流程,从需求分析到概念设计...

    数据库设计---需求分析设计

    2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图) 3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系...

    图书管理系统数据库设计-MYSQL实现.doc

    3. 设计索引 * 在student表上创建索引,升序排序 * 在book表上创建索引,升序排序 * 在borrow表上创建索引,升序排序 * 在return_table表上创建索引,升序排序 * 在ticket表上创建索引,升序排序 * 在manager表上...

    数据库设计-带书签目录超清扫描版

    本资源"数据库设计-带书签目录超清扫描版"提供了一个高质量的电子版本,适合学习者深入理解数据库设计的概念和技术。 首先,书签目录在电子文档中扮演着导航的角色,方便读者快速定位到特定的主题或章节。在这个...

    图书管理系统数据库设计-MYSQL实现.docx

    3. 索引设计: - 在student表上,为stu_id创建升序索引,便于快速查找和更新学生信息。 - 同样在student表上,为stu_name创建降序索引,方便按姓名逆序查找。 - 其他表如borrow、return_table等,可以根据具体...

    数据库-----讲义

    3. 数据库设计: - 需求分析:明确数据库要解决的问题和存储的数据类型。 - 概念设计:使用E-R(实体-关系)模型建立数据的概念视图。 - 逻辑设计:将E-R模型转换为特定DBMS支持的关系模式。 - 物理设计:考虑...

    图书管理系统数据库设计-MYSQL实现

    本资源摘要信息将详细介绍图书管理系统数据库设计的知识点,包括系统概述、需求分析、系统功能设计、数据库设计方案、表设计、索引设计等方面的内容。 一、系统概述 图书管理系统是图书馆中不可或缺的一部分,它...

    软件数据库设计 - 模板.docx

    《软件数据库设计 - 模板》 在软件开发过程中,数据库设计是至关重要的一步,它直接影响到系统的性能、可扩展性和维护性。本文档将详细阐述Webplug平台的数据库设计过程,包括设计原则、命名规则、逻辑设计、物理...

    数据库设计-网络收集的PPT

    - 表空间与索引设计:考虑数据的物理存储,包括表的分区、索引类型选择(B树、哈希等)以优化查询性能。 - 存储优化:设置字段长度、数据类型,考虑压缩和存储格式,以节省存储空间。 - 查询优化:分析SQL语句,...

    SQL Server 数据库技术---基础篇、数据库安全、SQL开发、数据库性能优化

    复制)、SQL开发(数据库设计、SQL Server与CLR集成、在SQL Server中使用 XML、使用ADO.NET、使用SMO编程管理数据库对象、高级T-SQL、Service Broker 异步应用程序平台、空间数据类型跨实例链接、数据库管理自动...

    数据库索引设计和优化

    数据库索引设计与优化是数据库管理系统中至关重要的一个环节,它直接影响到数据查询的效率、存储空间的使用以及系统的整体性能。在这个主题中,我们将深入探讨数据库索引的基础概念、设计原则、优化策略以及实际应用...

    大型数据库技术-关系型数据库设计完整版资料.pptx

    索引的设计是关系数据库设计的重要方面,主要包括索引的类型、索引的设计原则、索引的优缺点等。 物理设计 物理设计是关系数据库设计的最后阶段,主要包括物理存储的设计、数据存储的设计、数据库性能的优化等。 ...

    数据库实验-综合设计-中小型规模数据库-SQLserver

    (1)了解和掌握数据库设计的有关理论和方法。 (2)可以灵活运用数据库设计方法设计一个中小型规模的数据库。 2实验内容 2.1数据库概念模型设计 (1)进行需求分析。 (2)设计数据库概念模型,画出E-R图。 2.2...

    Oracle数据库--索引讲义.pptx

    - 索引是为加速表中元组检索而设计的存储结构,通过索引可以加快查询速度,但每次更新数据时需要同步更新索引,可能导致更新操作变慢。 - Oracle数据库会自动管理和使用索引,无需手动干预。 2. **B树索引** - B...

Global site tag (gtag.js) - Google Analytics