博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql server中使用组合索引需要注意的地方
阅读量:7255 次
发布时间:2019-06-29

本文共 1191 字,大约阅读时间需要 3 分钟。

一、使用组合索引需要注意的地方

 

1、索引应该建在选择性高的字段上(键值唯一的记录数/总记录条数),选择性越高索引的效果越好、价值越大,唯一索引的选择性最高;

2、组合索引中字段的顺序,选择性越高的字段排在最前面;如果把低选择性的列放在最左端,可能会造成无法使用该索引的情况。

3、where条件中包含两个选择性高的字段时,可以考虑分别创建索引,引擎会同时使用两个索引(在OR条件下,应该说必须分开建索引);

4、不要重复创建彼此有包含关系的索引,如index1(a,b,c) 、index2(a,b)、index3(a);

5、组合索引的字段不要过多,如果超过4个字段,一般需要考虑拆分成多个单列索引或更为简单的组合索引;

6、组合索引通常在查询语句中的WHERE条件使用了组合索引最左边的列时会最有用。

7、组合索引增加了更新数据成本,增加了存储索引的成本。另外,在dbms查询时,优化方案中不一定会选择到他(有可能直接选择了单键查询)

8、不要滥用索引。因为过多的索引不仅仅会增加物理存储的开销,对于插入、删除、更新操作也会增加处理上的开销,而且会增加优化器在选择索引时的计算代价。

9、太多的索引与不充分、不正确的索引对性能都是毫无益处的。

10、索引的建立必须慎重,对每个索引的必要性都应该经过仔细分析,要有建立的依据。

 

二、组合索引在查询中的应用实例 组合索引 Index (A, B, C)

 

1、下面条件可以用上该组合索引查询

  • A>5
  • A=5 AND B>6
  • A=5 AND B=6 AND C=7
  • A=5 AND B=6 AND C IN (2, 3)

2、下面条件将不能用上组合索引查询

  • B>5                              ——查询条件不包含组合索引首列字段
  • B=6 AND C=7                      ——理由同上

3、下面条件将能用上部分组合索引查询

  • A>5 AND B=2                   ——当范围查询使用第一列,查询条件仅仅能使用第一列
  • A=5 AND B>6 AND C=2           ——范围查询使用第二列,查询条件仅仅能使用前二列
  • A=5 AND B IN (2, 3) AND C=2   ——理由同上

 

组合索引在排序中的应用实例 组合索引 Index(A, B)

 

1、下面条件可以用上组合索引排序

  • ORDER BY A                     ——首列排序
  • A=5 ORDER BY B                 ——第一列过滤后第二列排序
  • ORDER BY A DESC, B DESC      ——注意,此时两列以相同顺序排序
  • A>5 ORDER BY A                 ——数据检索和排序都在第一列

2、下面条件不能用上组合索引排序

  • ORDER BY B                    ——排序在索引的第二列
  • A>5 ORDER BY B                ——范围查询在第一列,排序在第二列
  • A IN(1,2) ORDER BY B          ——理由同上
  • ORDER BY A ASC, B DESC       ——注意,此时两列以不同顺序排序

转载地址:http://fnkdm.baihongyu.com/

你可能感兴趣的文章
POJ 1151 Atlantis (线段树)
查看>>
在sqlserver中如何根据字段名查找字段所在的表
查看>>
quality center 11备份最佳方案测试通过可用
查看>>
一本比较简单易懂的中文python入门教程
查看>>
CDN和双线机房相比有何优势
查看>>
soapui not supported the auto complete
查看>>
Tomcat配置并启用HTTPS
查看>>
javascript调用WebService - Hello World
查看>>
【Tomcat】Servlet 工作原理解析
查看>>
C#设计模式(19)——状态者模式(State Pattern)
查看>>
UVA 10173 Smallest Bounding Rectangle(最小外接矩形)
查看>>
Top 126 Ajax Tutorials
查看>>
艾伟:.NET : 如何保护内存中的敏感数据?
查看>>
艾伟_转载:[原创]再谈IIS与ASP.NET管道
查看>>
一起谈.NET技术,实战ASP.NET大规模网站架构:Web加速器
查看>>
微软等厂商高管谈安全云面临的挑战
查看>>
RSA大会主角 云安全
查看>>
微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many
查看>>
C#Winform程序如何发布并自动升级(图解)
查看>>
Linux环境下VI/VIM编辑文件时无权限保存的解决方法
查看>>