聚簇索引:像目录表,目录表的顺序和实际的页码是一致的
特点:每个表只能有一个聚簇索引。
取数据比建立了非聚簇索引快
-----------------------------------------------------------------------------------------------
非聚簇索引:像标准的索引表。通常索引表中的顺序和实际的页码不一致。
特点:数据量大时,可以提高查询速度。相应的 insert update 就慢了
可以建立多个非聚簇索引。 249个
为什么:索引可以提高检索效率,因为它的二叉树结构以及占用空间小,所以访问速度块。让我们来算一道数学题:如果表中的一条记录在磁盘上占用1000字节的话,我们对其中10字节的一个字段建立索引,那么该记录对应的索引块的大小只有10字节。我们知道,SQL Server的最小空间分配单元是“页(Page)”,一个页在磁盘上占用8K空间,那么这一个页可以存储上述记录8条,但可以存储索引800条。现在我们要从一个有8000条记录的表中检索符合某个条件的记录,如果没有索引的话,我们可能需要遍历8000条×1000字节/8K字节=1000个页面才能够找到结果。如果在检索字段上有上述索引的话,那么我们可以在8000条×10字节/8K字节=10个页面中就检索到满足条件的索引块,然后根据索引块上的指针逐一找到结果数据块,这样IO访问量要少的多。
索引:经常对某一列进行查询时,就可以对这一列建立索引。
create index idx_s_name on t_stu(s_name);
怎样查看索引:
--索引是DB的内部的对象,无法查看,
--由DB自动使用
如果要经常对多个列进行查询:
--复合索引
create index idx_s_sname on t_stu (s_name, sex);
删除索引:
drop index xxxx;
注意:有些约束本质就是索引
主键 = 非空 + 唯一约束
唯一约束 = 唯一索引
create index in_id on t(tid);
drop index t.in_id;
select *from f1;
drop index f1.index_id;
create clustered index index_id on f1(fid);