很奇怪的聚集索引问题...

hwyqy 2011-03-13 10:38:55
有张报账表Reports,字段有ReportId,ReportUserId,Coutent,PerCount,Remark....

其中ReportId为自动编号且为主键

奇怪的是,如果使用Select * from Reports(Select后面或者多跟些字段名),那么顺序是按聚集索来排序
ReportId
4
5
6
7

如果使用Select ReportId from Reports,结果为
ReportId
5
4
6
7

当然,如果使用order by ,一切正常

怎么会出现这种情况?很奇怪,本来结果以为肯定按聚集索引排序的
...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn 2011-03-14
  • 打赏
  • 举报
回复
--#1.一般来说select * 不排序时,系统会按聚集索引的的顺序排序
--#2.但系统有它自己的存储方式,所以任何需要排序的情况下,都应该使用order by
coleling 2011-03-14
  • 打赏
  • 举报
回复
加我QQ:449693030,我远程帮你看看
昵称被占用了 2011-03-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wxf163 的回复:]
谁告诉你他按聚集索引排序的?
或者说你在哪看到的说:按聚集索引排序输出?
[/Quote]
一般是的,但是之前也发现有些补丁未打之前是有这种情况的
2000的SP3之前
所以最好不要默认表记录有什么次序,想要排序的时候一定加order by
王向飞 2011-03-13
  • 打赏
  • 举报
回复
谁告诉你他按聚集索引排序的?
或者说你在哪看到的说:按聚集索引排序输出?
hwyqy 2011-03-13
  • 打赏
  • 举报
回复
回楼上,确实已经创建为聚集索引了
--小F-- 2011-03-13
  • 打赏
  • 举报
回复
主键有索引 但是并不一定是聚集索引
hwyqy 2011-03-13
  • 打赏
  • 举报
回复
天哪,看错了,没恢复正常,救救我吧,已经晕了
hwyqy 2011-03-13
  • 打赏
  • 举报
回复
NND,后来重新点开表--索引,随便点点,点了点OK,就恢复正常了,看来Sql Server重新排序了
但为什么出现上面这种情况呢?

34,593

社区成员

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

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