Oracle:
oracle對無order by的語句返回的結果不進行排序,oracle此時的處理方式是按照數據的物理存儲順序來讀取數據。由於rowid是每行數據的地址,因此有時候看起來會像是使用rowid排序的。但這個順序是可能被打亂的,在表的數據被刪除後,rowid會被新插入的數據佔用。因此一個無order by查詢結果看起來也多是個雜亂無章的。oracle的數據庫實現就一個原則,怎麼快怎麼效率高就怎麼來。大多數狀況下不須要排序還非得按主鍵排序這不是浪費資源麼?這和oracle的表結構是有關係的,由於oracle的表結構默認是按堆存放的。按堆存放的意思就是,隨便存,存的時候就是亂序的。若是你建表的時候就是建的按索引組織的表,那麼它返回的時候就會默認排序了。
sql
sqlserver:數據庫
在不指定Order by的狀況下,sqlserver會根據執行計劃實際查詢方式來獲得數據,而執行計劃會根據sql中不少的因素(的查詢列,where條件,order by等)而使用不一樣的索引,最終出來的結果極可能是不一樣的。oracle
MySQL:
對於 MyISAM 表 ,Select 默認排序是按照物理存儲順序顯示的。sqlserver
而InnoDB 表,會按主鍵的順序排列。server
DB2:排序
DB2的尚不清晰,排序好像與sort heap相關。索引
總結:
任什麼時候候要排序就要加上order by資源