1、定义:

单一索引:

单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上;

复合索引:

复合索引也叫组合索引;

用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。

复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引;

同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,宽索引也就是索引列超过2列的索引;

设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效;

2、使用:

创建复合索引 :

CREATE INDEX columnId ON table1(col1,col2,col3) ;

查询语句:

  select * from table1 where col1= A and col2= B and col3 = C

这时候查询优化器,不在扫描表了,而是直接的从索引中拿数据,因为索引中有这些数据,这叫覆盖式查询,这样的查询速度非常快;

3、注意事项:

1、对于复合索引,在查询使用时,最好将条件顺序按找索引的顺序,这样效率最高;

 select * from table1 where col1=A AND col2=B AND col3=D 

如果使用

 where col2=B AND col1=A 

或者

where col2=B 

将不会使用索引。

2、何时是用复合索引     根据where条件建索引是极其重要的一个原则;     注意不要过多用索引,否则对表更新的效率有很大的影响,因为在操作表的时候要化大量时间花在创建索引中

3、复合索引会替代单一索引么     如果索引满足窄索引的情况下可以建立复合索引,这样可以节约空间和时间

4、备注:

对一张表来说,如果有一个复合索引 on   (col1,col2),就没有必要同时建立一个单索引 on col1;

如果查询条件需要,可以在已有单索引 on col1的情况下,添加复合索引on (col1,col2),对于效率有一定的提高;

同时建立多字段(包含5、6个字段)的复合索引没有特别多的好处,相对而言,建立多个窄字段(仅包含一个,或顶多2个字段)的索引可以达到更好的效率和灵活性。

5、例子:

转自:https://www.cnblogs.com/summer0space/p/7247778.htm

最新文章

  1. Visual Studio Code + live-server编辑和浏览HTML网页
  2. 关于SMBIOS
  3. [原]__FILE__宏
  4. (C++) CreateThread
  5. Authentication in .NET Web Api
  6. C语言实现二叉树
  7. [ML] Naive Bayes for email classification
  8. css 选择器优先级的计算过程
  9. 删除我的电脑中360随身WiFi云U盘的图标
  10. Delphi中ADO异步执行方式
  11. BZOJ 3065 带插入区间K小值
  12. android 中View, Window, Activity, WindowManager,ViewRoot几者之间的关系
  13. EMVTag系列5《8E 持卡人验证方法(CVM)名单》
  14. LeetCode OJ 118. Pascal's Triangle
  15. java中堆栈的功能作用 以及區別(搜集)
  16. .NET常用第三方库(包)总结(转)
  17. 深入理解 JavaScript 执行上下文和执行栈
  18. Java并发编程:volatile关键字解析zz
  19. 组件式开发(Vue)
  20. JS放在博客里面运行

热门文章

  1. Mxnet框架搭建
  2. ros平台下python脚本控制机械臂运动
  3. ros python 构造 pose
  4. spring boot + vue 前后分离实现登录功能(二)
  5. 你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦
  6. 001-http-总览、文件配置、常用http client、http连接池
  7. Javascript——概述 && 继承 && 复用 && 私有成员 && 构造函数
  8. C++: Unresolved external symbol __imp__fscanf
  9. checkbox 在移动端显示为小圆圈问题
  10. Intellij IDEA 2016.3.4 注册激活--转