oracle如何查询一个用户下的所有分区表?求脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle如何查询一个用户下的所有分区表?求脚本相关的知识,希望对你有一定的参考价值。

查看当前用户下的分区表:
select * from user_part_tables ;
或者下面的语句可以:
select * from dba_part_tables where owner ='scheme名称' ;
dba_part_tables表是sys用户下的表。

要想查看表分区的名称:
select partition_name from user_segments where segment_type='TABLE PARTITION' and segment_name='表名';
或者下面的语句可以:
select * from dba_part_col_statistics where lower(table_name)= '表名';
dba_part_col_statistics表是sys用户下的表。
参考技术A 查看当前用户下的分区表

select table_name,partitioning_type from user_part_tables ;

使用sys用户查看某用户的所有分区表

select table_name,partitioning_type,t.owner from dba_part_tables t where owner ='&owner_name' ;追问

那么如何查找所有的表分区名称呢 ?

追答

select TABLE_NAME,PARTITION_NAME from user_tab_partitions ;

select TABLE_OWNER,TABLE_NAME,PARTITION_NAME from dba_tab_partitions where table_owner='&OWNER_NAME' ;

oracle 中查询按某种要求条件查询结果,如何能够提高效率?

比如普通查询最新数据是select * from(select * from table order by create_date desc)where rownum<=1;这样的话,每次都要对所有的数据重新排列。感觉应该效率很低,如果是多少万条数据的话,应该如何查询?新手求指点。

如果表的数量级大了的话,建议做成分区表,举例说下比如存一年的数据可以按12个月拆成12个分区,然后建立分区索引,再在日期上边建立索引,查询的效率会提高。
如果数据每天都在百万以上可以按12个月把一张表拆成12张表,这12张表是按天建立的分区表,再加上分区索引和日期索引,查询效率会有很大的提升。
参考技术A 给表加一个日期字段,并按日期字段建立索引,每次查日期最新的可以吗 参考技术B 对create_date建立索引

以上是关于oracle如何查询一个用户下的所有分区表?求脚本的主要内容,如果未能解决你的问题,请参考以下文章

oracle 中查询按某种要求条件查询结果,如何能够提高效率?

在Oracle数据库中如何查询某一个表空间下的某张表里面的数据;怎么查询某个表空间下的所有表的信息

如何在ORACLE中查询某一用户下所有的空表

oracle如何查询当前用户分区表的最大分区,最小分区和当前分区的数量

oracle 怎样查询某用户下的所有表的表名

oracle 怎样查询某用户下的所有表的表名