Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1112629
  • 博文数量: 231
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 2662
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-03 16:35
个人简介

学无止境

文章分类

全部博文(231)

文章存档

2014年(7)

2013年(103)

2011年(11)

2010年(53)

2009年(57)

分类: Oracle

2011-01-20 10:26:02

表的默认排序是按物理顺序还是逻辑顺序

数据库块大小为8192,表默认pctfree为10
创建一张表,每个块最多只能保存1行数据:
create table def_order (id int,a1 char(2000),b1 char(2000),c1 char(2000));

按顺序,插入3行记录:
insert into def_order values(1,'a1','b1','c1');
insert into def_order values(2,'a2','b2','c2');
insert into def_order values(3,'a3','b3','c3');
commit;
 
分析表:
exec dbms_stats.gather_table_stats('LDY','DEF_ORDER');
 
检查行的默认顺序:
SQL> select id from def_order;
        ID
----------
         2
         3
         1

并不是按照插入的顺序1,2,3进行显示的。
检查每行所在的块号:
 
SQL> select dbms_rowid.rowid_block_number(rowid) ,id from def_order;
DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)         ID
------------------------------------ ----------
                                  60          2
                                  61          3
                                  64          1
 
由此可见,表的默认排序是按照物理顺序排序的。
阅读(3102) | 评论(1) | 转发(0) |
0

上一篇:查询重写实验

下一篇:登录失败触发器

给主人留下些什么吧!~~

chinaunix网友2011-03-09 09:38:15

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com