標(biāo)題有點(diǎn)拗口,來源于一個(gè)開發(fā)人員遇到的實(shí)際問題
  先拋出問題:一個(gè)查詢沒有明確指定排序方式,那么,第二次執(zhí)行這個(gè)同樣的查詢的時(shí)候,查詢結(jié)果會(huì)不會(huì)與第一次的查詢結(jié)果排序方式完全一樣?
  答案是不確定的,兩個(gè)完全一樣的查詢,結(jié)果也完全一樣,兩次(多次)查詢結(jié)果的排序方式有可能一致,有可能不一致。
  如果不一致,又是什么原因?qū)е峦瑯拥牟樵兡J(rèn)排序方式不一致?
  以下簡(jiǎn)單分析幾種情況,說明為什么查詢同樣的查詢會(huì)出現(xiàn)默認(rèn)排序結(jié)果不一樣的情況。當(dāng)然對(duì)于該問題,包含但不限于以下幾種情況。

 

場(chǎng)景1:并行查詢導(dǎo)致默認(rèn)結(jié)果集的排序是隨機(jī)的

按照慣例,先造一個(gè)表供測(cè)試

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

create table TestDefaultOrder1
(
    id int identity(1,1) primary key,
    col2 varchar(50),
    col3 varchar(50),
    col4 varchar(50),
    col5 varchar(50),
    col6 varchar(50),
    col7 varchar(50),
    col8 varchar(50),
    CreateDate Datetime)godeclare @i int =0 begin tran
    while @i<500000
    begin
        insert into TestDefaultOrder1 values (NEWID(),NEWID(),NEWID(),NEWID(),NEWID(),NEWID(),NEWID(),GETDATE()-RAND()*500)        set @i=@i+1
    endcommit

網(wǎng)友評(píng)論