测试一
创建带有时间格式字段的表,从小到大循环插入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字段为索引,所以在查询是数据按照索引情况展示了。