如果不寫Order By子句,會怎麼樣

2021-04-29 10:06:01 字數 1746 閱讀 6269

我們都知道在t-sql查詢中,如果不恰當地使用了order by子句,那麼將嚴重影響到效能。很多優化顧問都會把儘量減少使用order by作為一條建議。

但又有人轉念一想,如果我們在查詢中不寫order by子句,那麼出來的結果到底會怎麼樣排序呢?你要知道,即便再怎麼樣,資料結果集還是得有乙個順序的。那麼這個無形的順序是由什麼決定的呢?

這個問題的答案得從兩個方面來說

1. 如果表擁有聚集索引,那麼就會按照聚集索引,公升序(asc)

2. 如果表不擁有聚集索引,那麼就不好說了。實際上,這種情況下資料出來的順序是隨機的,它主要與sql server讀取資料的順序有關。

我們可以來看乙個例子

我有乙個測試的表,叫orders,裡面只有乙個列。我隨機輸入了一些數字。【注意:我是故意讓數字交錯的】

如果,我們沒有在表上面設計聚集索引,那麼

select [id]

from [demo].[dbo].[orders]

的結果就和上面是一樣的。【也許在某些時候會不一樣,但這個不太好測試,在表的資料很多或者使用者併發很多的情況下可能會出現】

我覺得這個順序通常會跟我們insert資料的先後有關係的。

但是,如果我們在表上面新增乙個聚集索引,指定id為鍵列

此時,你再執行同樣的查詢語句,卻可以看到下面的結果

下面這個是執行計畫

出處:http://blog.csdn.net/chen_xizhang

沒有iml檔案會怎麼樣 如果沒有配音會怎麼樣

美化聲音的技巧 我們都知道在電影拍攝現場有錄音人員,但是會有很大的雜音,是不能用的。後期製作中有對畫面的也有對聲音的處理,為什麼需要配音,第一就是如果觀眾是內地的,想要看一部香港片但是又聽不懂粵語,難道只能看字幕嘛,看字幕就影響了對這部電影的觀賞度,看字幕會分散注意力。這個時候就需要乙個配音演員。還...

如果你是ip,你會怎麼選

如果你是網路層,你更喜歡icmp tcp udp三種報文中的哪乙個?如果你了解mtu和mss,那你應該很容易做出選擇 就像選擇物件一樣,你首先要了解對方是誰,有什麼優缺點,能給你帶來什麼 internet control message protocol,ip層的乙個組成部分,主要用來傳遞差錯報文以...

對於筆試題,如果讓你出?你會怎麼出?

對 裡面的很多東西都在不斷的嘗試,比如說對讀取 章節內容的方式,用httpwebrequest建立請求,httpwebresponse接受請求返回的資料方式,發現會時不時報一些異常 伺服器提交了協議衝突。這種異常是間斷性的,用socket方式訪問讀取偶爾有出現 伺服器積極拒絕,基礎鏈結已經關閉。後面...