索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引:
在经常需要搜索的列上,可以加快搜索的速度;
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
同样,对于有些列不应该创建索引。一般来说,不应该创建索引的这些列具有下列特点:
第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。
第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少,不利于使用索引。
第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改操作远远多于检索操作时,不应该创建索引。

到底什么时候该用索引相关推荐

  1. MySQL InnoDB索引介绍及优化

    转载自 https://segmentfault.com/a/1190000007445807 一.索引概念 索引(index)翻译为一个目录,用于快速定位我们想要找的数据的位置.例如:我们把一个数据 ...

  2. 百度的索引真的比雅虎多么?

    百度的索引真的比雅虎多么? timestamp:2006/12/3 看到一篇文章"[数据统计] 搜索引擎索引库:百度大于雅虎中国 之一" http://blog.csdn.net/ ...

  3. MySQL优化(二):索引的类型、匹配原则、创建原则

    目录 索引的优缺点 索引类型 聚簇索引(主键索引) 非聚簇索引(二级索引.辅助索引) 索引匹配的原则 最左匹配原则 无法使用索引的场景 索引创建的原则 使不使用索引的依据到底是什么? 参考 索引的优缺 ...

  4. oracle 索引_分享三个Oracle数据库索引监控脚本,值得收藏

    概述 我们在维护业务系统时,可能会建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,那么oracle 是如何监控索引的使用状况,是否可以清除它们? 监控索引 一般有两种方式: ...

  5. 索引利弊,如何创建索引,单键索引还是组合索引

    ** 索引的利弊与如何判定,是否需要索引** 相信读者都知道索引能够极大地提高数据检索的效率,让Query 执行得更快,但是可能并不是每一位朋友都清楚索引在极大提高检索效率的同时,也给数据库带来了一些 ...

  6. lepus监控oracle数据库_实用脚本一键监控oracle数据库索引使用状况

    概述 我们在维护业务系统时,可能会建立很多索引,那么这些索引的使用到底怎么样,是否有些索引一直都没有用到过,那么oracle 是如何监控索引的使用状况,是否可以清除它们? 监控索引 一般有两种方式: ...

  7. mysql 字段值分布很少的字段要不要加索引

    在我还是个菜鸟程序员的时候,看到有的同事给字段值分布很少的字段也加索引,这违背了我看过的大部分mysql索引优化的文章内容,甚是疑惑. 例如:订单状态字段只有6个值: 1 待付款,2 待发货,3.待收 ...

  8. mysql组合索引,abc索引命中

    mysql联合索引,abc的争议实践 原因: 在一次和同事讨论mysql联合索引的面试题时出现了争议.主要问题是:a.b.c三个字段作为联合索引,b.c:和a.c情况到底会不会命中索引? 网上查阅相关 ...

  9. Oracle分区之五:创建分区索引总结

    分区索引总结: 一,分区索引分为2类: 1.global,它必定是Prefix的.不存在non-prefix的 2.local,它又分成2类:    2.1.prefix:索引的第一个列等于表的分区列 ...

最新文章

  1. Ubuntu 将 /home 或 /var 目录挂载到新的分区
  2. C# http 性能优化500毫秒到 60 毫秒
  3. 算法分析 载货问题_协会发布 | 汽车市场走势分析及2021年预测报告
  4. java 方块_哈工大java实验 移动小方块
  5. centos编译安装php7_centos7源码安装php7.2
  6. 计算机接口实验0832,现代计算机接口实验 (四)0832实验
  7. Ubuntu18.04之微信中文乱码解决
  8. strace的简单用法
  9. Android 自定义 View
  10. [转载] vim风格设置
  11. 海康VisionMaster定位任务
  12. Android影院选座
  13. C/C++ 中 int 转 string,string 转 int 的几种方法
  14. B站头部UP主抱团垄断优质资源,腰部UP主的流量突破口在哪?
  15. 探索sklearn的数据集——以红酒数据集为例
  16. 《视搭》开源视频创作工具,保姆级搭建教程,短视频创作利器
  17. AB-test理解与实战
  18. 疯狂Python讲义之变量和简单类型--深入使用字符串笔记4
  19. 关于计算机类期刊投稿心得,计算机类期刊投稿心得.doc
  20. 数字电路设计--用3个开关控制一个电灯

热门文章

  1. 查找当前设备 (Ubuntu) 支持的 NVIDIA 驱动版本
  2. Github上的几个C++开源项目
  3. 网上搜到的一些数据分析工程师的面试题
  4. php操作热敏打印机,如何在laravel 5.4中使用热敏打印机?
  5. 首个“开源ChatGPT”来了:基于谷歌5400亿参数大模型,华人小哥出品,网友吐槽:这谁能跑?
  6. java自定义findbugs规则_FindBugs规则整理
  7. # Cobalt Strike: 使用进程内存解密流量-Part 3
  8. Web开发中的AJAX技术介绍
  9. 《一位父亲给梦鸽女士的一封信》全文
  10. 4pl参数拟合python程序