日期:2014-05-18  浏览次数:20574 次

结果集排序 和 WHERE条件筛选顺序 问题
1、结果集排序
  select * from table_a
  在没有用order by来排序的情况下,结果结是怎么排序的?
2、WHERE条件筛选顺序
  select * from table_a where [la]>1 and [lb]='X'
  是先筛选条件 [la]>1 还是 [lb]='X'


本人比较菜,第一次上来提问,多谢指教!

------解决方案--------------------
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'.
------解决方案--------------------
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',如果第一天没索引,第二列有索引,优化器可能选择先计算第二列。
------解决方案--------------------
第一题:
存在聚集索引的情况下 按照聚集索引列排序出现
第二题:
优化器自动优化
------解决方案--------------------
探讨
第一题:
存在聚集索引的情况下 按照聚集索引列排序出现
第二题:
优化器自动优化