各個資料庫的無order by時的預設排序

2021-07-24 10:23:45 字數 749 閱讀 4833

oracle:

oracle對無order by的語句返回的結果不進行排序,oracle此時的處理方式是按照資料的物理儲存順序來讀取資料。因為rowid是每行資料的位址,所以有時候看起來會像是使用rowid排序的。但這個順序是可能被打亂的,在表的資料被刪除後,rowid會被新插入的資料占用。所以乙個無order by查詢結果看起來也可能是個雜亂無章的。oracle的資料庫實現就乙個原則,怎麼快怎麼效率高就怎麼來。大多數情況下不需要排序還非得按主鍵排序這不是浪費資源麼?這和oracle的表結構是有關係的,因為oracle的表結構預設是按堆存放的。按堆存放的意思就是,隨便存,存的時候就是亂序的。如果你建表的時候就是建的按索引組織的表,那麼它返回的時候就會預設排序了。

sqlserver:

在不指定order by的情況下,sqlserver會根據執行計畫實際查詢方式來得到資料,而執行計畫會根據sql中很多的因素(的查詢列,where條件,order by等)而使用不同的索引,最終出來的結果很可能是不同的。

mysql:

對於 myisam 表 ,select 預設排序是按照物理儲存順序顯示的。

而innodb 表,會按主鍵的順序排列。

db2:

db2的尚不清晰,排序好像與sort heap相關。

總結:

任何時候要排序就要加上order by

各個資料庫分頁

s ql server的分頁 select from select top pagesize from select top pagesize cureentpage from user table order by id asc as asystable order by id desc as b...

各個資料庫的預設埠

總結一下各個資料庫的預設埠 驅動 oracle.jdbc.driver.oracledriver url jdbc oracle thin port dbname 注 machine name 資料庫所在的機器的名稱,如果是本機則是127.0.0.1或者是localhost,如果是遠端連線,則是遠端...

各個資料庫的約束刪除

1 sql server中刪除約束的語句是 alter table 表名 drop constraint 約束名 sp helpconstraint 表名 找到資料表中的所有列的約束 2 oracle中刪除約束的語句 先找到表的約束名稱,執行 select from user constraints...