MSSQL,查询记录返回的顺序是按什么排的?

anlianganl 2011-01-12 10:56:10
比如,是按照插入的先后顺序吗?
...全文
257 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn 2011-01-12
  • 打赏
  • 举报
回复
#1.没有设置任何索引和主键,应该是按输入顺序的(按照物理存储来排)
#2.有主键,按主键排序
#3.无主键,有索引,按索引排序
#4.有GROUP BY语句,按GROUP BY中的字段排序

--小F-- 2011-01-12
  • 打赏
  • 举报
回复
插入的先后顺序
anlianganl 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]
这个得看你有没有索引了。。
[/Quote]
如果没有主键呢?
--小F-- 2011-01-12
  • 打赏
  • 举报
回复
这个得看你有没有索引了。。
快溜 2011-01-12
  • 打赏
  • 举报
回复
你猜对了。
anlianganl 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 guguda2008 的回复:]

如果有ORDER BY ,是按ORDER BY指定的顺序

[/Quote]
如果 ORDER BY 的时候 有相等的数据
比如说,ORDER BY ID DESC
有N个ID 都是一样的
这时候 再排序的时候 还是需要物理排序的吧。
也就是说,不管用到 索引 ,ORDER BY,GROUP BY等这些排序的时候
如果遇到一样的,还是隐藏用到了物理排序。
但这个物理顺序,插入的先后顺序吗?
我记得orcale是按rowid 排序的。
但这个 rowid 并不是后插入记录的rowid就越大,也可能会小的。
不知道mssql是这样的吗?
guguda2008 2011-01-12
  • 打赏
  • 举报
回复
不全面

如果有ORDER BY ,是按ORDER BY指定的顺序

如果没有ORDER BY但有GROUP BY,会按GROUP BY的字段排序

如果都没有,但条件完全符合某个索引,会按那个索引的键值排序

如果都没有,会按物理顺序。

聚集索引顺序就代表物理顺序,不应该分开说
wing7742 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 abuying 的回复:]
引用 5 楼 wwwwgou 的回复:

#1.没有设置任何索引和主键,应该是按输入顺序的(按照物理存储来排)
#2.有主键,按主键排序
#3.无主键,有索引,按索引排序
#4.有GROUP BY语句,按GROUP BY中的字段排序

顶,再加一个order by
#4.有order BY语句,按order BY中的字段排序
[/Quote]
总结的真好
abuying 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wwwwgou 的回复:]

#1.没有设置任何索引和主键,应该是按输入顺序的(按照物理存储来排)
#2.有主键,按主键排序
#3.无主键,有索引,按索引排序
#4.有GROUP BY语句,按GROUP BY中的字段排序
[/Quote]
顶,再加一个order by
#4.有order BY语句,按order BY中的字段排序
yy1987316 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wwwwgou 的回复:]
#1.没有设置任何索引和主键,应该是按输入顺序的(按照物理存储来排)
#2.有主键,按主键排序
#3.无主键,有索引,按索引排序
#4.有GROUP BY语句,按GROUP BY中的字段排序
[/Quote]
up

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧