结果集排序 和 WHERE条件筛选顺序 问题

liu119144664 2010-04-07 12:13:16
1、结果集排序
select * from table_a
在没有用order by来排序的情况下,结果结是怎么排序的?
2、WHERE条件筛选顺序
select * from table_a where [la]>1 and [lb]='X'
是先筛选条件 [la]>1 还是 [lb]='X'


本人比较菜,第一次上来提问,多谢指教!
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu119144664 2012-02-14
  • 打赏
  • 举报
回复
sorry 不直不知道怎么给分
liu119144664 2010-04-08
  • 打赏
  • 举报
回复
我对 “存在聚集索引的情况下 按照聚集索引列排序出现” 这个存在怀疑:
上次有个同事用游标的时候没有用ORDER BY ,结果没有按照聚集索引排序,查了很长时间都没检查出来是这个地方有问题。
htl258_Tony 2010-04-07
  • 打赏
  • 举报
回复
1、结果集排序
select * from table_a
在没有用order by来排序的情况下,结果结是怎么排序的?

在没有聚集索引的情况下,按照物理地址(就是插入数据的先后顺序)来显示,不存在你说的排序.


2、WHERE条件筛选顺序
select * from table_a where [la]>1 and [lb]='X'
是先筛选条件 [la]>1 还是 [lb]='X'

看计划,理论上是先[la]>1 再 [lb]='X',如果第一天没索引,第二列有索引,优化器可能选择先计算第二列。
dawugui 2010-04-07
  • 打赏
  • 举报
回复
1、结果集排序
select * from table_a
在没有用order by来排序的情况下,结果结是怎么排序的?

按照物理地址(就是插入数据的先后顺序)来显示,不存在你说的排序.


2、WHERE条件筛选顺序
select * from table_a where [la]>1 and [lb]='X'
是先筛选条件 [la]>1 还是 [lb]='X'

这个不好说,系统会去自动优化查询的顺序,你可以查看执行计划.
不过就你这个条件,理论上是先[la]>1 再 [lb]='X'.
dawugui 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liu119144664 的回复:]
我也像大家这样想过,但是我想知道有什么比较官方的说明!谢谢!
[/Quote]
你去问问微软的人.
liu119144664 2010-04-07
  • 打赏
  • 举报
回复
我也像大家这样想过,但是我想知道有什么比较官方的说明!谢谢!
SQL77 2010-04-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 feixianxxx 的回复:]
第一题:
存在聚集索引的情况下 按照聚集索引列排序出现
第二题:
优化器自动优化
[/Quote]
1有聚集的话就是按聚集的,没聚集就直接按照你插入数据的顺序,
2UP小麦,优化器会根据数据自动优化
幸运的意外 2010-04-07
  • 打赏
  • 举报
回复
了解一下权威人士的答案.
--小F-- 2010-04-07
  • 打赏
  • 举报
回复
膜拜楼上几位大仙
feixianxxx 2010-04-07
  • 打赏
  • 举报
回复
第一题:
存在聚集索引的情况下 按照聚集索引列排序出现
第二题:
优化器自动优化

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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