没有指定order by 排序,同一条SQL(查询条件的值不同,也就是说不是同一天的数据),为什么查出来的数据顺序不同啊
问题,如题目所示
环境:winXP SP3,数据库服务器是MSDE,数据库客户端microsoft SQL Server Manegement Studio2005
这些,都在我的机器上,只有我用我的机器,没有其他人连接我的数据库。
(我的环境都是日文环境,下面的叙述可能多少和中文环境有些语言上的出入,不理解的请问我)
SQL文如下:
SELECT DISTINCT
dbo.POSTotalSectionSales.ShopCode, dbo.POSTotalSectionSales.SalesDate, dbo.POSSectionMaster.SectionCode,
dbo.POSSectionMaster.Name, SUBSTRING(dbo.POSSectionMaster.SectionCode, 1, 1) AS Type
FROM dbo.POSSectionMaster CROSS JOIN
dbo.POSTotalSectionSales
where dbo.POSTotalSectionSales.SalesDate = '2009/10/12'
dbo.POSSectionMaster表里只有SectionCode和Name,共21G条数据,就是各个部门的名称,主KEY是SectionCode。
dbo.POSTotalSectionSales表里,有ShopCode,SalesDate,SalesHour,SectionCode,Name,Type,Count,Amount,
主KEY是(ShopCode,SalesDate,SalesHour,SectionCode,),表中有很多天的数据,
但是POSTotalSectionSales.ShopCode字段可以无视,因为这个字段的内容都是同一个商店CODE。
现在分别执行两次这个SQL文,
第一次,设定查询条件SalesDate = '2009/10/12'
第二次,设定查询条件SalesDate = '2009/10/13'
现象:第一次的查询结果,是乱序的,第二次的查询结果,是按照SectionCode排好序的,
看了看执行计划,这两次查询,不同的地方是,第一次有个Hash Match(aggregate),第二次有个Sort(Distinct Sort)
(其他的日期也反复的查询了几次,和第二次一个样,按照SectionCode排序的,执行计划里面也有个Sort或者Sort(Distinct Sort))
问题:
为什么同一条查询语句,只有查询的条件值不同,出的结果的排序会不同呢