小谈聚集索引自动排序(一)

      我们来看一个简单的查询语句:SELECT * FROM T1 ORDER BY ID,T1表上的ID列为int数据类型,如果该表 上为ID列创建了一个按照升序排列的聚集索引,那么这个查询语句返回的结果集效果等价于这条语句: SELECT * FROM T1,这是因为如果表上创建了聚集索引,那么其数据的存储则是按照聚集索引指定的顺序排列, 因此再对聚集索引列排序是画蛇添足,下面我们举例来说明。

  我们先创建一个测试表T1(以下在WindowsXP+SQLServer2008环境下通过),表上只有一个int类型的列ID, 我们顺序为其插入1~500的整数,然后再依次插入504,503,501,502,然后执行查询: SELECT * FROM T1 WHERE ID > 499,结果如图:

    我们可以看到,返回的结果集的是没有大小顺序的,当然因为我们没有指定ORDER BY语句,接着我们 加上ORDER BY ID的排序语句后,执行结果如图:

 

        我们看到ID已经按照从小到大的顺序返回,接着我们为ID列创建一个按照升序排列的聚集索引,然后 执行语句:SELECT * FROM T1 WHERE ID >= 499,结果如图:

    结果验证了之前的论述,这会不会是巧合呢?我们继续测试,我们把创建的聚集索引删除,然后再次执行 语句:SELECT * FROM T1 WHERE ID >= 499,结果如图:

    通过结果,我们可以看到,即使我们这个时候没有加上ORDER BY语句,这时候的数据依然会按照从小 到大的顺序排列,这是因为,在创建索引时,其数据内部的分配做了调整,关于这点,我们等会会验证它, 我们这时候重新创建索引,但是是创建降序索引,然后再次执行同样的语句,结果如图:

   从结果的返回来看,ID列的确是按照降序的排列返回,也从而论证了我们之前提到的结论。 通过这个例子,希望让更多的朋友能加深对聚集索引的了解,同时上面提到的,聚集索引创建了以后,其 数据页内部分配做了调整,关于这个,我将会在第二序章讨论,欢迎网友参与讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值