物理排序是深处排序。 逻辑排序是表明现象,,具体就像一个仓库内的物品 物理排序就是把这仓库内的物品按照一定顺序存放,并列出对照表。。,逻辑排序就是 ,不应管仓库内的物品排放顺序(物品随便放),只要有 列出对照表 一样能找到。。这个是寻找速度的快慢。但 物理顺序对硬盘读写数据大。。。逻辑排序对硬盘读写数据小。。 其实两个方式的数据搜索速度差不多。
怎么说呢,并不是说做不到,而是你的理解有一点点问题。
数据库中的“表”总的来说是无序的,也就是说,它“不应该”有“顺序”的概念。一个表里的每个条目都是一样的,本质上没有“先后”。“顺序”体现在对表的“查询”动作中。换句话说,就是你的order by才告诉引擎,查询到的若干条目应该以什么样的顺序排列。这是一个很科学也很重要的概念。因为在实际使用中,你可能今天想按某个时间字段排序,明天想按某个索引号排序,但这些所谓的“顺序”都是你想要看到的数据的一种投影方式,而并不是数据本身应当具有的属性。
如果你确实需要对数据库中的所有条目,按某个字段排列的话,比较可行的办法就是把它们都读出来,排序,清空或删除表(并重建),重新写入数据。
看你怎么理解数据量了,如果是按照表的行数
select table_name,blocks,num_rows
from dba_tables
where owner not like '%SYS%' and table_name not like '%$%'
order by num_rows desc;
如果是按照表占用的数据块排序
select table_name,blocks,blocks
from dba_tables
where owner not like '%SYS%' and table_name not like '%$%'
order by blocks desc;
上面的where条件是为了筛除系统表,不过写的并不详细,你可以根据自己的具体要求改写
数据库表内的记录存储方式是内部行为,通常为了索引方便,并不会按照你需要的排序方式存储的,但是从来没人管过它是怎么存的,因为你只需要用SQL语句取出来用的时候设置一下排序就行了(order by),如果要倒序排列,就用order by {时间类型字段名} desc另外如果你的数据库是oracle,可以用to_char({时间类型字段名},'YYYY/MM/DD HH24:MI:SS')获得你要求格式的时间信息
以上就是关于数据库的数据物理排列顺序和数据逻辑排列顺序有什么区别能详细说说么全部的内容,包括:数据库的数据物理排列顺序和数据逻辑排列顺序有什么区别能详细说说么、SQL数据库如何按照表内某列int值的大小进行排序求指教!、oracle怎么把数据库表按照表大小排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)