【SQLSERVER】索引

索引语法

CREATE INDEX [INDEX_NAME] ON [dbo].[TABLE_A] ([COLOUM])

索引类型

UNIQUE 

CLUSTERED(聚集索引)

NONCLUSTERED(非聚集索引)

UNIQUE 使用场景


唯一索引不允许两行具有相同的索引键值。 视图的聚集索引必须唯一,唯一索引中使用的列应设置为 NOT NULL,因为在创建唯一索引时,会将多个 Null 值视为重复值

eg:

CREATE UNIQUE INDEX index1 ON schema1.table1 (column1 DESC, column2 ASC, column3 DESC);

CLUSTERED(聚集索引)使用场景

可用于经常使用的查询。
提供高度唯一性。
可用于范围查询 ,使用运算符(如 BETWEEN,、>>=、<和 <=)返回值范围。
返回大型结果集。
使用 JOIN 子句;一般情况下,使用该子句的是外键列。
使用 ORDER BY 或 GROUP BY 子句。

eg

CREATE CLUSTERED INDEX index1 ON database1.schema1.table1 (column1);


NONCLUSTERED(非聚集索引)使用场景

使用 JOIN 或 GROUP BY 子句。
不返回大型结果集的查询。
包含经常包含在查询的搜索条件(例如返回完全匹配的 WHERE 子句)中的列。

eg

CREATE INDEX index1 ON schema1.table1 (column1);
// or use NONCLUSTERED 
CREATE NONCLUSTERED INDEX index1 ON schema1.table1 (column1);

索引查询
 

1. 使用系统目录查询

SELECT i.name AS index_name  
    ,COL_NAME(ic.object_id,ic.column_id) AS column_name  
    ,ic.index_column_id   
FROM sys.indexes AS i  
INNER JOIN sys.index_columns AS ic
    ON i.object_id = ic.object_id AND i.index_id = ic.index_id  
WHERE i.object_id = OBJECT_ID('表名');

2. 使用系统存储过程查询

exec sp_helpindex 表名

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒冰的暖

谢谢您的赞许投喂~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值