一、索引概念
- 索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间。
- SQLServer索引有两种,聚集索引和非聚集索引;
- 聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续;
- 聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
二、索引创建原则
1.定义主键的数据列一定要建立索引。
2.定义有外键的数据列一定要建立索引。
3.对于经常查询的数据列最好建立索引。
4.对于需要在指定范围内的快速或频繁查询的数据列;
5.经常用在WHERE子句中的数据列。
6.经常出现在关键字order by、group by、distinct后面的字段。如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
7.对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
8.对于定义为text、image和bit的数据类型的列不要建立索引。
9.对于经常存取的列不要建立索引
10.限制表上的索引数目。对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。索引虽说提高了访问速度,但太多索引会影响数据的更新操作。
11.对复合索引,按照字段在查询条件中出现的频度建立索引。在复合索引中,记录首先按照第一个字段排序。对于在第一个字段上取值相同的记录,系统再按照第二个字段的取值排序,以此类推。因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用,因此将应用频度高的字段,放置在复合索引的前面,会使系统最大可能地使用此索引,发挥索引的作用。
三、创建索引
- 管理工具创建: 选择一个表右键,选择设计,在空白处右键点击索引/键,添加即可。
- sql语句创建:
- 创建一般索引:
CREATE INDEX 索引名称 ON 表名 (字段列名) - 创建唯一索引:
CREATE UNIQUE INDEX 索引名称 ON 表名 (字段列名)
- 补充创建: 直接在管理工具运行sql语句,此时打开资源消耗提示,运行提示语句即可。
四、删除索引
- 管理工具删除:选择修改表右键,选择设计,在空白处右键点击索引/键,选中删除即可。
- sql语句删除:
drop index 索引名称 on 表名
五、查看索引
- 管理工具直接选择表展开子级索引即可。
- sql语句查看所有索引信息:
EXEC sp_helpindex '表名'。
六、全文索引和目录
- 定义/意义:Sql Server中的全文索引(下面统一使用FULLTEXT INDEX来表示全文索引),是一种特定语言搜索索引功能。它和LIKE的不一样,LIKE主要是根据搜索模板搜索数据,LIKE的效率比FULLTEXT INDEX要低。在几百万的字符串中,LIKE需要花几分钟才能返回的结果,FULLTEXT INDEX可能只需要几秒钟。
- 全文索引的使用(参考):
- 分别使用管理工具和T-SQL创建:juejin.cn/post/684490…
- 管理全文索引:www.cnblogs.com/HDK2016/p/1…
- 全文索引的SQL查询关键字: www.lmlphp.com/user/61981/…