HIVE常用命令之ANALYZE TABLE命令简述

HIVE常用命令之ANALYZE TABLE命令简述,第1张

上次讲过HIVE 的一个常用命令 MSCK REPAIR TABLE , 这次讲讲HIVE的 ANALYZE TABLE 命令,接下来还会讲下Impala的 COMPUTE STATS 命令。这几个命令都是用来统计表的信息的,用于加速查询。

其实主要就是为了优化查询,加快查询的速度。

结果如下 numRows=12552, totalSize=1564884, rawDataSize=1552332

在Oracle数据库中,查看所有表及对应个表的行数,只用一个select语句查询table_name和num_rows两个字段即可。table_name是表名,num_rows代表表的行数。

具体如下:

1、查询数据库所有的表sql:select ttable_name,tnum_rows from all_tables t;

sql执行后的输出结果如下图:

2、查询当前用户表sql:select ttable_name,tnum_rows from user_tables t;

sql执行后输出结果如下图:

扩展资料:

分享一些ORACLE中,对所有表的查询sql:

1、查询所有表名:

select ttable_name from user_tables t;

2、查询所有字段名:

select tcolumn_name from user_col_comments t;

3、查询指定表的所有字段名:

select tcolumn_name from user_col_comments t where ttable_name = 'BIZ_DICT_XB';

4、查询指定表的所有字段名和字段说明:

select tcolumn_name, tcolumn_name from user_col_comments t where ttable_name = 'BIZ_DICT_XB';

5、查询所有表的表名和表说明:

select ttable_name,fcomments from user_tables t inner join user_tab_comments f on ttable_name = ftable_name;

6、查询模糊表名的表名和表说明:

select ttable_name from user_tables t where ttable_name like 'BIZ_DICT%';

select ttable_name,fcomments from user_tables t inner join user_tab_comments f

on ttable_name = ftable_name where ttable_name like 'BIZ_DICT%';

7、查询表的数据条数、表名、中文表名

select anum_rows, aTABLE_NAME, bCOMMENTS from user_tables a,user_tab_comments b WHERE aTABLE_NAME = bTABLE_NAME  order by TABLE_NAME;

参考资料来源:百度百科-Oracle PL/SQL宝典(第2版)

参考资料来源:百度百科-Oracle数据库编程经典300例

该命令有助于诊断性能低下的查询,尤其是查询是否使用了可用的索引。下面介绍下 这个命令显示的结果列的含义:

| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

1️⃣Table:索引所在的表名

2️⃣Non_unique:0表示该索引是唯一索引,1表示该索引不是唯一索引

3️⃣Key_name:索引的名称

4️⃣Seq_in_index:索引列在索引中的位置,从1开始。对于组合索引来说,这个字段很重要。

5️⃣Column_name:索引列的名称

6️⃣Collation:索引列的值以什么方式存储在索引中。在MySQL中,A 表示有排序,B+树索引使用该方式;NULL 表示无序的,Heap索引使用该方式;

7️⃣Cardinality:索引中唯一值的数目的估计值。通过运行ANALYZE TABLE或myisamchk -a可以更新。基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。 索引列所有值去重后的数量。该值除以该表的行数越接近1越好,如果非常小,则需要考虑是否可以删除该索引!

8️⃣Sub_part:数值 N 表示只对该列的前 N 个字符进行索引;NULL 表示索引整个列的值

9️⃣Packed:指示关键字是否被压缩,NULL 表示没有压缩

1️⃣0️⃣Null:索引列是否可以为空

1️⃣1️⃣Index_type:索引类型,BTREE 表示B+树索引。一共有四种(BTREE, FULLTEXT, HASH, RTREE)。

1️⃣2️⃣Comment:注释

1️⃣3️⃣Index_comment:注释

本语句用于分析和存储表的关键字分布。在分析期间,使用一个读取锁定对表进行锁定。这对于MyISAM、BDB和InnoDB表有作用。对于MyISAM表,本语句与使用 myisamchk -a 相当。

MySQL使用已存储的关键字分布来决定,当对除常数以外的对象执行联合时,表按什么顺序进行联合。本语句会返回一个含有以下列的表:

当需要删除一个索引时,使用语句:

需要特别注意的是,当使用组合索引时,where 语句中最常使用的字段名,应该放在组合索引中的第一个。比如,以下组合索引的定义:

基本就可以判断,id,book,author 作为 where 的查询条件的频率,从大到小应该是:id > book > author。还需要知道的一点是,触发组合索引的条件是向后匹配组合索引中的字段。还是看上面这个组合索引的例子,当查询语句的 where 条件包括下面任何一种情况,才会触发组合索引:

如果是以下任何一种情况,则不会触发组合索引:

ANALYZE语句有以下几个选项:

1 ANALYZE TABLE:用于分析表的统计信息,包括表中的行数、列数、数据类型、索引状态和索引统计信息等。

2 ANALYZE INDEX:用于分析索引的统计信息,包括索引的行数、列数、索引类型、索引状态和索引统计信息等。

3 ANALYZE COLUMN:用于分析表中指定列的统计信息,包括列的行数、数据类型、索引状态和索引统计信息等。

4 ANALYZE PARTITION:用于分析表的分区统计信息,包括分区的行数、分区状态、分区类型和分区统计信息等。

5 ANALYZE SYSTEM:用于分析系统的统计信息,包括系统的表数、索引数、行数、列数、数据类型等。

以上就是关于HIVE常用命令之ANALYZE TABLE命令简述全部的内容,包括:HIVE常用命令之ANALYZE TABLE命令简述、oracle查看所有表及各表行数、MySQL -- show index from table和analyze table t等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9455013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存