performance-optimization
  • Introduction
  • JVM优化篇
    • JVM结构剖析
    • JAVA程序运行原理分析
    • JVM内存模型
    • 详细垃圾回收机制
    • 常见的垃圾回收器有那些
    • JVM性能调优以及配置
      • jstat参数详细配置
      • G1垃圾回收器参数配置
      • JVM性能调优——常用配置
      • JVM性能调优——案例
      • JVM性能调优——理论篇
      • JVM性能调优——实战篇
      • JVM性能优化分析工具
    • ClassLoader详解
    • Tomcat WebappClassLoader 类加载机制源码分析
  • SQL优化篇
    • MySQL优化篇
      • Mysql的联合索引
      • Mysql如何避免回表查询?什么是索引覆盖?
      • 数据库存储的引擎分析
      • 详解索引及优化
        • 索引优缺点
        • 索引种类
        • 不走索引的情况
        • 索引实现分析
        • 高性能前缀索引
      • SQL性能分析
        • 执行计划
        • 慢SQL监控
      • SQL语句分析
        • 业务层面优化
        • 数据库层面优化
        • SQL语句拆分简单sql
      • 理解MYSQL底层索引
      • MySQL性能优化之参数配置
      • MySQL锁机制详解及死锁处理方式
      • MYSQL中update的low_priority
      • InnoDB数据库死锁
      • MySQL中Innodb的聚簇索引和非聚簇索引
      • B+Tree讲解
        • B-/B+树看 MySQL索引结构
        • B+Tree详细讲解
        • MySQL索引背后的数据结构及算法原理
        • 从 MongoDB 及 Mysql 谈B/B+树
      • MySQL索引的数据结构及算法原理
  • WEB容器优化篇
    • Tomcat容器优化篇
      • Tomcat容器内部原理
      • Tomcat可配参数分析
      • Benchmark压力测试
      • Tomcat调优篇实战
    • WEB程序容器结构剖析
Powered by GitBook
On this page
  • 为什么要创建索引呢(优点)?
  • 建立方向索引的不利因素(缺点)
  • 什么样的字段适合创建索引

Was this helpful?

  1. SQL优化篇
  2. MySQL优化篇
  3. 详解索引及优化

索引优缺点

为什么要创建索引呢(优点)?

创建索引可以大大提高系统的性能。

  1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

  2. 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

  3. 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

  4. 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

  5. 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

建立方向索引的不利因素(缺点)

也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?这种想法固然有其合理性,然而也有其片面性。虽然,索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。

  1. 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

  2. 索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

  3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

什么样的字段适合创建索引

索引是建立在数据库表中的某些列的上面。因此,在创建索引的时候,应该仔细考虑在哪些列上可以创建索引,在哪些列上不能创建索引。

  1. 一般来说,应该在这些列上创建索引,例如:

  2. 在经常需要搜索的列上,可以加快搜索的速度;

  3. 在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;

  4. 在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;

  5. 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;

  6. 在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;

  7. 在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

建立索引,一般按照select的where条件来建立,比如: select的条件是where f1 and f2,那么如果我们在字段f1或字段f2上简历索引是没有用的,只有在字段f1和f2上同时建立索引才有用等。

Previous详解索引及优化Next索引种类

Last updated 5 years ago

Was this helpful?