当前位置:  开发笔记 > 数据库 > 正文

主键Ascending与Descending

如何解决《主键Ascending与Descending》经验,为你挑选了1个好方法。

在Sql Server中,我有一个带有Identity主键的表.通常我想要最新的几条新记录,所以我通过降低主键来获取排序的前n个.我应该将主键索引定义为降序,还是没有区别?即如果它们按升序排列,那么sql能否同样有效地向后工作?



1> Rex M..:

从纯粹的查询角度来看,如果您想要提取N个最近或N个最早的记录,那么您的密钥是下降还是上升没有区别:

无论密钥存储的顺序如何,SQL Server的内部算法都可以单列索引的两个方向同等有效地导航.例如,在单列索引上指定DESC不会使使用ORDER BY IndexKeyCol DESC子句的查询运行得比为索引指定ASC更快.

http://msdn.microsoft.com/en-us/library/aa933132(SQL.80).aspx

但是,在几乎任何正常情况下,您希望主键是升序并且通常是顺序的以防止碎片.SQL Server经过优化,可以将新记录物理地附加到数据库文件的末尾.如果它需要在顶部插入每个新记录并将所有内容都向下推,那么可能会导致几乎100%的碎片.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有