buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

用与不用聚集索引的区别 sql用例

对数据表创建了聚集索引后,当向表中插入数据时,数据库会对数据按照索引进行重新排序存储。 所以,对于频繁执行insert操作的表,在对聚集索引的创建上,需要做权衡,有时需考虑不建立聚集索引。

如下用例说明了使用与不使用聚集索引时,数据的存储情况。

if not object_id('test_no_cx') is null
drop table test_no_cx
if not object_id('test_has_cx') is null
drop table test_has_cx

--创建一个不含索引的表test_no_cx
create table test_no_cx(id int, name varchar(20), createtime datetime default(getdate()))


--插入若干条记录(注意:这里故意打乱id的顺序)
insert test_no_cx(id, name) values(100,'100''s value')

insert test_no_cx(id, name) values(5,'5''s value')
insert test_no_cx(id, name) values(90,'90''s value')

--创建含索引的表test_has_cx
create table test_has_cx(id int, name varchar(20), createtime datetime default(getdate()))

create clustered index ix_test_has_cx on test_has_cx(id)

--将test_no_cx中的记录批量插入到test_has_cx中
insert test_has_cx select * from test_no_cx


--此时比较两表的记录如下:


--向两表中插入一条同样的记录
insert test_no_cx(id, name) values(50,'50''s value')

insert test_has_cx(id, name) values(50,'50''s value')

--此时比较两表的记录如下:

 注:以上sql可直接运行。

 

posted on 2011-11-17 19:12  buguge  阅读(529)  评论(0编辑  收藏  举报