当前位置: 代码迷 >> Sql Server >> 以时间替聚集索引且正序写入,查询为倒序,如果索引设为倒序,是否大大影响写入效率
  详细解决方案

以时间替聚集索引且正序写入,查询为倒序,如果索引设为倒序,是否大大影响写入效率

热度:27   发布时间:2016-04-24 18:39:22.0
以时间为聚集索引且正序写入,查询为倒序,如果索引设为倒序,是否大大影响写入效率?
我用SQL SERVER 2012的datetime2(7)作为聚集索引,问题情况如下:
1、因为该值为系统默认的"sysdatetime",所以只要产生新数据,信息一定为正序添加。
2、查询总是为倒序排列,因为用户总是想让最新的信息显示在最上面。
3、聚集索引最拍的是向中间插入一条数据,因为这样会影响整个表的物理排序,这样会导致整个表进行聚集索引重新排序。我看网上说这种情况的写入效率最差。
我想问的是:如果我将聚集索引设为正序asc,且数据为正序增加,是否这样的情况,写效率最高?
而如果我将此时间聚集索引设为倒序,然而数据位正序增加,那么是否每增加一条,数据库都要把新数据插入到原来数据的最底下,导致整个数据表都要位移?从而导致整个表的写入效率大大降低?
还是设置的索引顺序无所谓?
整个问题涉及数据库的堆栈原理问题,所以请大家讨论一下,支支招。
谢谢!
------解决方案--------------------
有聚集索引,无论升序还是倒序,都不会引入sort排序符,也就是说不会带来什么影响。
------解决方案--------------------

引用:
这个结果就可以解释,你的索引可以设为asc排序,减少insert的开销。当然,如果你从中间插入,无论正序还是倒序,都有影响


那请教:因为我通常都是desc查询的,那是否我可以将此聚集索引设为desc呢?设为desc,是否会影响写入效率呢?
谢谢
------解决方案--------------------
引用:
非常感谢版主!
我起码弄清了:聚集索引时,无论ASC还是DESC,在查询时,效率都是一样的。
对于写效率,如果设置为ASC还是DESC,还没有彻底弄清楚,但根据您的判断,应该是ASC好一些,是吧?哈
等下,我继续google一下,谢谢您的迅速解答。
如果有问题就接着问,如果没有问题,我今天就会结贴。


其实,聚集索引,asc还是desc,为什么查询的效率是一样的呢

这个就像,比如表中存储的数据,就像是一本书,那么asc的时候,就是从第一页开始,往后翻,而desc的时候,只需要从最后一页往前翻。

所以,效率是一样的。
  相关解决方案