博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle列顺序的影响
阅读量:6324 次
发布时间:2019-06-22

本文共 982 字,大约阅读时间需要 3 分钟。

 Oracle列顺序的影响 

通常情况下,dba或开发人员在进行表设计的时候,都不会考虑到列在表中的顺序的问题,那么列的顺序对我们加快访问表中的数据有没有作用喃?如果我们知道了数据库引擎是怎样在块中存储行的话,这个问题我们就能容易明白了。

H:header记录了行本身的一些属性信息,比如是否锁定,该行中有多少列等;

Ln:length每列的长度

Dn:data 数据

create table test_column_order

(

id1 number,

id2 number,

id3 number,

id4 number,

id5 number,

id6 number,

id7 number,

id8 number,

id9 number,

id10 number

)

begin

for i in 1..1000000 loop

insert into test_column_order values(1,2,3,4,5,6,7,8,9,0);

end loop;

end;

/

declare

sum1 number;

begin

for i in 1..200 loop

select count(id1) into sum1 from test_column_order;

end loop;

end;

/

declare

sum1 number;

begin

for i in 1..200 loop

select count(id10) into sum1 from test_column_order;

end loop;

end;

/

在了解了行的格式后,数据库引擎要定位到某一列,但是它并不知道该列在这一行中的偏移值,这样不得不从第一列开始,然后按照第一列的长度定位到第二列,然后在根据第二列的长度定位到第三列。那么我们在定位第一列的速度应该是最快的,定位往后的列将会越来越慢。

那么在了解数据库的访问规则后,dba应该将经常访问的列放在表的前面。这个需要协同开发人员,在系统设计的时候,做出合适的评估。比如在表设计中经常使用的primary key,在sql审核的时候,发现全部是放在了第一列,但是我们很少使用它,反而一些经常使用时间字段,状态标志位放在了表的后面,如果我们能够利用好列顺序的影响,那么对我们的性能提高也是有一定意义的。

转载地址:http://msqaa.baihongyu.com/

你可能感兴趣的文章
C#反射方法学习
查看>>
MD5加密解密
查看>>
.Net 转战 Android 4.4 日常笔记(6)--Android Studio DDMS用法
查看>>
SVN被锁定的几种解决方法
查看>>
js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)...
查看>>
ios ios7 取消控制拉升
查看>>
182在屏幕中实现网格化视图效果
查看>>
本文摘录 - FlumeJava
查看>>
Scala学习(三)----数组相关操作
查看>>
Matlab基于学习------------------函数微分学
查看>>
UVa 11790 - Murcia's Skyline
查看>>
启动时创建线程并传递数据
查看>>
汉字正字表达式解决方案
查看>>
lemon OA 下阶段工作安排
查看>>
WCF X.509验证
查看>>
Fatal error: Class 'GearmanClient' not found解决方法
查看>>
jsoup分解HTML DOM
查看>>
数据库分析与设计总结
查看>>
Axure RP介绍
查看>>
ini_set()函数的使用 以及 post_max_size,upload_max_filesize的修改方法
查看>>