Oracle 数据插入与查询问题

sxyweiren 2012-08-09 04:59:58
Oracle的数据插入与查询顺序到底是客户端决定还是服务器决定???

比如下面Sql文。

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



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

但是好像两种客户端多次跑出来的结果顺序都是一致的。
所以我们的客户就不干了。。非得要我们给出个理由来。。哪个大神来给个说法????
...全文
253 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxyweiren 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
得先去理解堆表和索引组织表的概念。
索引组织表按照索引字段顺序存储,查询顺序得到结果。

堆表存储数据是随机的,哪儿有地方往哪儿存。
查询结果未排序的话,和存储顺序一样。
[/Quote]

哦。。了解,,我去看看。。不过9和11都没有索引啊,,但是两个插入数据的顺序咋就是固定的了呢。。

也就是9i执行多次,结果都一致,11也是。
但是9和11就不一样了。
sxyweiren 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
drop了以后commit一下?
[/Quote]

本身就是临时表,用的时候先DRop下,然后重新建
sxyweiren 2012-08-29
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
你这个数据表难道没有 rownum 这个列么??


order by rownum 不久可以 保证一致了么?
[/Quote]

插入过程中顺序就不一样了。。。
mynynyc 2012-08-22
  • 打赏
  • 举报
回复
drop了以后commit一下?
allen519 2012-08-22
  • 打赏
  • 举报
回复
你这个数据表难道没有 rownum 这个列么??


order by rownum 不久可以 保证一致了么?
luoliluoli88 2012-08-22
  • 打赏
  • 举报
回复
这个不懂
雁户 2012-08-22
  • 打赏
  • 举报
回复
了解一下堆表和索引组织表的概念吧
雁户 2012-08-22
  • 打赏
  • 举报
回复
得先去理解堆表和索引组织表的概念。
索引组织表按照索引字段顺序存储,查询顺序得到结果。

堆表存储数据是随机的,哪儿有地方往哪儿存。
查询结果未排序的话,和存储顺序一样。
sxyweiren 2012-08-20
  • 打赏
  • 举报
回复
好像没有好点的答案了。。。。
sxyweiren 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
SELECT 按照INSERT顺序排序。看看是不是。
[/Quote]

SELECT 有自己的ORDER BY 啊。。
关键是INSERT是根据什么来定先后的呢???
cyld2046 2012-08-15
  • 打赏
  • 举报
回复
SELECT 按照INSERT顺序排序。看看是不是。
sxyweiren 2012-08-14
  • 打赏
  • 举报
回复
好像这个问题不好回答么???
sxyweiren 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
让客户去了解下数据存储机制,页面分配等,几句话就把他忽悠晕了,数据库又不是自已开发的,哪有这么多为什么,什么都知道还在这混,呵呵
[/Quote]

这个方法不错哈。。。不过万一他问我呢。。。。我就晕了啊。。
sxyweiren 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
不知道用create table as select *的结果如何?
[/Quote]

这样子又改SQL了啊。。。
sxyweiren 2012-08-10
  • 打赏
  • 举报
回复
还有其他的说法么???
yaoweijq 2012-08-09
  • 打赏
  • 举报
回复
不知道用create table as select *的结果如何?
人生无悔 2012-08-09
  • 打赏
  • 举报
回复
让客户去了解下数据存储机制,页面分配等,几句话就把他忽悠晕了,数据库又不是自已开发的,哪有这么多为什么,什么都知道还在这混,呵呵
sxyweiren 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
你给两个客户端的test1 表,建立相同的聚簇索引
然后在两边select * from test1,此时结果就是一致的了
[/Quote]

关键是临时表啊。。不用建索引啊。。连主键都没有。。

都烦死我了。。在这个点上扣住了。。

有可能作为还价的依据。。。
人生无悔 2012-08-09
  • 打赏
  • 举报
回复
你给两个客户端的test1 表,建立相同的聚簇索引
然后在两边select * from test1,此时结果就是一致的了




sxyweiren 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
哎,这个问题不懂。
[/Quote]

话说不好解释么???

这种帖子很多啊。但是没有最终结论呢。
加载更多回复(1)

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧