zoukankan      html  css  js  c++  java
  • 用与不用聚集索引的区别 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可直接运行。


    当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
    本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/archive/2011/11/17/2253057.html


  • 相关阅读:
    文件查找和压缩
    shell脚本编程基础
    [模板]数据生成与对拍
    Codeforces Round #746 (Div. 2)
    Codeforces Round #712 (Div. 2)
    Codeforces Round #715 (Div. 2)
    Codeforces Round #752 (Div. 2)
    提高模拟赛Day8T3树上跑步
    提高模拟赛Day8T2最大匹配
    提高模拟赛Day8T1求中位数
  • 原文地址:https://www.cnblogs.com/buguge/p/2253057.html
Copyright © 2011-2022 走看看