日期:2014-05-16  浏览次数:20882 次

Oracle 数据插入与查询问题
Oracle的数据插入与查询顺序到底是客户端决定还是服务器决定???

比如下面Sql文。

Drop table test1;
create table test1 ……;
insert into test1 select * from test;
select * from test1;



Oracle 9i 和11G的客户端跑11G的服务器,出来的顺序就是不一样的呢???
是因为Test1没有主键的问题么??

但是好像两种客户端多次跑出来的结果顺序都是一致的。
所以我们的客户就不干了。。非得要我们给出个理由来。。哪个大神来给个说法????

------解决方案--------------------
哎,这个问题不懂。

------解决方案--------------------
你给两个客户端的test1 表,建立相同的聚簇索引
然后在两边select * from test1,此时结果就是一致的了





------解决方案--------------------
让客户去了解下数据存储机制,页面分配等,几句话就把他忽悠晕了,数据库又不是自已开发的,哪有这么多为什么,什么都知道还在这混,呵呵 

------解决方案--------------------
不知道用create table as select *的结果如何?
------解决方案--------------------
SELECT 按照INSERT顺序排序。看看是不是。
------解决方案--------------------
这个不懂
------解决方案--------------------
你这个数据表难道没有 rownum 这个列么??


order by rownum 不久可以 保证一致了么?
------解决方案--------------------
drop了以后commit一下?
------解决方案--------------------
得先去理解堆表和索引组织表的概念。
索引组织表按照索引字段顺序存储,查询顺序得到结果。

堆表存储数据是随机的,哪儿有地方往哪儿存。
查询结果未排序的话,和存储顺序一样。
------解决方案--------------------
了解一下堆表和索引组织表的概念吧