1.1、MSSQL索引

什么是索引

索引是一种特殊的查询表,可以被数据库搜索引擎加速数据的检索。

索引的作用

索引能够提高 SELECT 查询和 WHERE 子句的速度,但是却降低了包含 UPDATE 语句或 INSERT 语句的数据输入过程的速度。索引的创建与删除不会对表中的数据产生影响。

添加了索引的列应该尽早出现在where条件中,注:索引是不可更改的,想更改必须删除重新建

索引的语法

--创建非唯一键索引
CREATE INDEX index_name ON table_name (column_name);

--创建唯一键索引
CREATE UNIQUE INDEX index_name ON table_name (column_name);

--删除索引
DROP INDEX index_name ON table_name;


--检查表是否存在索引 
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID('表名', N'U') and NAME='索引名称')
 BEGIN
	  SELECT  1;
 END
--在Customers表中增加姓名为索引
CREATE [UNIQUE] INDEX Customers_姓名_IDX ON SQL_Road.dbo.Customers (姓名);

索引的类型

创建单列索引还是聚簇索引,要看每次查询中,哪些列在作为过滤条件的 WHERE子句中最常出现。如果只需要一列,那么就应当创建单列索引。如果作为过滤条件的 WHERE 子句用到了两个或者更多的列,那么聚簇索引就是最好的选择

聚集

聚集索引。表数据按照索引的顺序来存储的,也就是说索引项的顺序与表中记录的物理顺序一致,每个表只能有一个聚集索引。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。 在一张表上最多只能创建一个聚集索引,因为真实数据的物理顺序只能有一种。

参考

https://www.cnblogs.com/lyhabc/p/3196479.html
https://www.cnblogs.com/lyhabc/p/3196484.html
https://blog.csdn.net/weixin_39557583/article/details/110433342

每个表只能有一个聚集索引多建立会报错

聚集索引报错

非聚集

  1. 非聚集索引。表数据存储顺序与索引顺序无关,非聚集索引包含非聚集索引键值,每个键值项指向包含该键值的数据行的指针。

避免使用索引

  • 小的数据表不应当使用索引;
  • 需要频繁进行大批量的更新或者插入操作的表;
  • 如果列中包含大数或者 NULL 值,不宜创建索引;
  • 对于那些只用来查询的字段应该避免建立索引;
  • 在以下情况下不适合建立索引:
    • 表中数据量较少时
    • 需要频繁进行增删改操作的表
    • 列值重复性高
posted @ 2026-08-30 17:44  清哥的码农生活  阅读(2)  评论(0)    收藏  举报