Sql server SELECT*FROM表格未按插入顺序检索行
我有一个10万行的表,每行生成Sql server SELECT*FROM表格未按插入顺序检索行,sql-server,Sql Server,我有一个10万行的表,每行生成ID。 当我从表中选择*时,它不会按插入的顺序检索行 结果集按ID的顺序排列 是否需要由订购?为什么不按插入顺序进行检索。是的,唯一能保证查询返回结果的顺序的是在该查询的最外层应用的orderby子句 任何你可能观察到的,可能使你相信某个特定顺序会被优先选择的东西,都是巧合 如果插入顺序对您很重要,我还建议您显式地将其存储在datetime2列中,因为我通常还建议您不要对IDENTITY列的数值赋予任何意义-将其视为恰好适合数字列的不透明blob,稍后您将避免许多其
ID
。
当我从表中选择*时,它不会按插入的顺序检索行
结果集按ID的顺序排列
是否需要由订购?为什么不按插入顺序进行检索。是的,唯一能保证查询返回结果的顺序的是在该查询的最外层应用的orderby
子句
任何你可能观察到的,可能使你相信某个特定顺序会被优先选择的东西,都是巧合
如果插入顺序对您很重要,我还建议您显式地将其存储在
datetime2
列中,因为我通常还建议您不要对IDENTITY
列的数值赋予任何意义-将其视为恰好适合数字列的不透明blob,稍后您将避免许多其他问题(请参阅本网站上约5亿个关于为什么IDENTITY
列包含间隙或跳1000以了解原因的问题)是。ORDER by
是按特定顺序获得select语句结果所必需的。这是因为关系数据库中的表本质上是无序集。没有
orderby
子句,任何关系数据库都无法保证从select语句返回的记录的顺序。虽然您可能多次运行相同的select而不使用order by获得相同的行顺序,但不能保证每次都以该特定顺序返回 从维基百科的页面上(强调我的) 关系被定义为具有相同属性的一组元组。元组通常表示一个对象以及关于该对象的信息。对象通常是物理对象或概念。关系通常被描述为一个表,它被组织成行和列。属性引用的所有数据都在同一个域中nd符合相同的约束条件 关系模型指定关系的元组没有特定的顺序,而元组又不对属性施加顺序。应用程序通过指定查询来访问数据,这些查询使用诸如选择来标识元组、投影来标识属性和连接来组合关系等操作。关系可以可以使用insert、delete和update运算符修改。新元组可以提供显式值,也可以从查询中派生。类似地,查询可以标识要更新或删除的元组
你可能是说行而不是列