总结:
-
什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
-
分类:
唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)
聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引 -
创建索引的标准:用语频繁搜索的列;用语对数据进行排序的列
注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长
1:基本语法:
CREATE
[索引类型]
INDEX
索引名称
ON
表名(列名)
WITH
FILLFACTOR = 填充因子值0~100
GO
2:基本语法2
USE 库名
GO
IF EXISTS (
SELECT
*
FROM
SYSINDEXES
WHERE
NAME
=
'IX_TEST_TNAME'
)
--检测是否已经存在IX_TEST_TNAME索引
DROP
INDEX
TEST.IX_TEST_TNAME
--如果存在则删除
--创建索引
CREATE
NONCLUSTERED
INDEX
IX_TEST_TNAME
--创建一个非聚集索引
ON
TEST(TNAME)
--为TEST表的TNAME字段创建索引
WITH
FILLFACTOR = 30
--填充因子为30%
3:案例:
USE ActivityDB -- 数据库名称
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_CouponsInfoDN_Code')--检测是否已经存在IX_TEST_TNAME索引 IX_CouponsInfoDN_Code 自己取的索引名称
DROP INDEX CouponsInfoDN.IX_CouponsInfoDN_Code--如果存在则删除 CouponsInfoDN 表明
--创建索引
CREATE NONCLUSTERED INDEX IX_CouponsInfoDN_Code --创建一个非聚集索引
ON CouponsInfoDN(Code) --为CouponsInfoDN表的Code字段创建索引 CouponsInfoDN是表 Code是字段
WITH