SQL Server表默认排序

我有简单的SSIS包,我将数据从平面文件导入SQL Server表(SQL Server 005).文件包含70k行,表没有主键.导入是成功的但是当我打开SQL Server表时,行的顺序与文件的顺序不同.仔细观察后,我看到表中的数据默认按第一列排序.为什么会这样?以及如何避免默认排序?
谢谢.
最佳答案
除非在SQL查询中指定order by,否则不能依赖于排序. SQL是一种与集合一起使用的关系代数.那些集合是无序的.数据库表没有内部排序.

很可能由于从表中检索数据的方式而对这些集进行排序.这可以基于主键,插入顺序,聚类键,基于查询的执行计划或表中的实际数据或甚至月相的看似随机的顺序.

底线,如果您想要特定订单,请使用订单.如果您不想要特定订单,DBMS可以按任意顺序交付您的行,包括基于第一列的行.

如果您确实希望它们根据导入文件中的位置进行排序,则应该向表中添加另一列,以根据其在该文件中的位置存储递增的数字.然后使用该列使用订单.但这是一个非常随意的排序顺序,你通常最好选择一个对数据更有意义的(交易ID,日期/时间,客户编号或其他任何你有的).

如果要避免默认排序(可能是变量),请使用特定排序.

转载注明原文:SQL Server表默认排序 - 代码日志