Oracle-插入顺序是否影响查询顺序

    测试一

    创建带有时间格式字段的表,从小到大循环插入2020年每一天。

    不加排序查询表中数据发现,数据并没有按照从小到大显示,第一行是2020-10-12。

    推测插入顺序不影响查询顺序。

    

    测试二

    CREATE TABLE AS SELECT FROM 测试一的表 ORDER BY 日期,创建新表。

    不加排序查询表中数据发现,新建的表数据按照从小到大显示。第一行是2020-01-01。

    推测CREATE TABLE AS 在分配空间时整体划分,地址连续,所以查询时根据创建时的顺序显示。

               

    测试三

扫描二维码关注公众号,回复: 8058966 查看本文章

    清空测试二创建的表,改为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字段为索引,所以在查询是数据按照索引情况展示了。

猜你喜欢

转载自www.cnblogs.com/yangjn/p/11976404.html
今日推荐