我正在分析在hive表上使用索引的影响。我创建了一个包含5列(COL1
,COL2
,COL3
,COL4
,COL5
)的表格,并在其中加载了100000行。我还在这张桌子上创建了一个关于COL1的索引。
我在select *
上使用WHERE
子句运行COL1
,这是一个索引列。
与在运行索引之前运行相同查询的情况相比,我发现查询运行时没有任何改进。
我在我的选择查询上做了一个EXPLAIN,它显示了TableScan而不是IndexScan,我无法弄清楚为什么它没有使用索引。
请帮忙。
答案 0 :(得分:2)
创建索引
CREATE INDEX .. ON TABLE ...
构建索引
ALTER INDEX .. ON .. REBUILD;
使用索引
INSERT OVERWRITE DIRECTORY' / tmp / indexes /.. 39; SELECT _bucketname
,_offsets
FROM default__t _..__...
SET hive.index.compact.file = / tmp / indexes / x;
SET hive.input.format = org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFormat;
SELECT ... from ... where ... group by ...;
希望有所帮助