sql – 主键排序

前端之家收集整理的这篇文章主要介绍了sql – 主键排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
表是否按照其主键进行内在排序?如果我在BigInt标识列上有一个包含主键的表,我可以相信查询将始终返回按键排序的数据,或者我是否明确需要添加“ORDER BY”.性能差异很大.

解决方法

数据通过聚集索引进行物理存储,聚簇索引通常是主键,但不一定是.

如果没有ORDER BY子句,则不保证sql中的数据具有顺序.当您需要按特定顺序排列数据时,应始终指定ORDER BY子句.如果表已经按这种方式排序,优化器将不会做任何额外的工作,因此将它放在那里是没有害处的.

如果没有ORDER BY子句,RDBMS可能会在等待从磁盘读入记录时返回与您的查询匹配的缓存页面.在这种情况下,即使表上有索引,数据也可能不会以索引的顺序进入. (注意这只是一个例子 – 我不知道甚至认为现实世界的RDBMS会这样做,但它是sql实现的可接受行为.)

编辑

如果在排序时与不排序时有性能影响,则可能会对没有索引(聚簇或其他)的列(或列集)进行排序.鉴于它是一个时间序列,您可能会根据时间进行排序,但聚集索引位于主要bigint上. sql Server不知道两者都以相同的方式增加,所以它必须采取一切措施.

如果时间列和主键列是按顺序相关的(当且仅当另一个增加或保持不变时,才会增加),而是按主键排序.如果它们不以这种方式相关,则将聚簇索引从主键移动到您要排序的任何列.

猜你在找的MsSQL相关文章