在Sql Server中,我有一个带有Identity主键的表.通常我想要最新的几条新记录,所以我通过降低主键来获取排序的前n个.我应该将主键索引定义为降序,还是没有区别?即如果它们按升序排列,那么sql能否同样有效地向后工作?
从纯粹的查询角度来看,如果您想要提取N个最近或N个最早的记录,那么您的密钥是下降还是上升没有区别:
无论密钥存储的顺序如何,SQL Server的内部算法都可以在单列索引的两个方向上同等有效地导航.例如,在单列索引上指定DESC不会使使用ORDER BY IndexKeyCol DESC子句的查询运行得比为索引指定ASC更快.
http://msdn.microsoft.com/en-us/library/aa933132(SQL.80).aspx
但是,在几乎任何正常情况下,您希望主键是升序并且通常是顺序的以防止碎片.SQL Server经过优化,可以将新记录物理地附加到数据库文件的末尾.如果它需要在顶部插入每个新记录并将所有内容都向下推,那么可能会导致几乎100%的碎片.