測試一
創建帶有時間格式字段的表,從小到大循環插入2020年每一天。
不加排序查詢表中數據發現,數據並沒有按照從小到大顯示,第一行是2020-10-12。
推測插入順序不影響查詢順序。
測試二
CREATE TABLE AS SELECT FROM 測試一的表 ORDER BY 日期,創建新表。
不加排序查詢表中數據發現,新建的表數據按照從小到大顯示。第一行是2020-01-01。
推測CREATE TABLE AS 在分配空間時整體划分,地址連續,所以查詢時根據創建時的順序顯示。
測試三
清空測試二創建的表,改為INSERT INTO SELECT * FROM 測試一的表
不加排序查詢表中數據發現,第一行是2020-07-18
清空測試二創建的表,改為INSERT INTO SELECT * FROM 測試一的表 ORDER BY 日期
不加排序查詢表中數據發現,第一行是2020-10-19
再次清空測試二創建的表,INSERT INTO SELECT * FROM 測試一的表 ORDER BY 日期
不加排序查詢表中數據發現,第一行是2020-10-10
總結
插入順序不影響查詢順序,插入時Oracle查詢可用塊存儲數據,塊的位置是隨機的,所以數據的順序無法確認。
CREATE命令在執行時捕獲滿足表大小的塊,一次性分配地址,所以查詢時數據是連續的。
發現
測試一中,單獨查詢RQ字段,則數據是從小到大顯示的,測試三中並未出現此情況。
原因,測試一中RQ字段為索引,所以在查詢是數據按照索引情況展示了。