我是Hive
和SQL
的新手。我目前正在查询数据库以提取基于
SELECT * FROM database.table WHERE A = '980dsf9sfjklsdfj' AND B = '141519384938' AND C = 'URL'
A --> some id value
B --> timestamp value
c --> url
这些查询需要一段时间才能执行。我想,当向表中添加更多数据时,这些查询可能需要更长时间。我怎样才能加快这个过程?我想也许如果我事先对时间戳值进行排序,它会使查询更快?
答案 0 :(得分:2)
我也是Hive的新手,但总的来说,你可以通过添加索引来加速这样的查询。您可以在单个字段上添加索引,但通常也可以为多个字段创建组合索引,这样可以在查询这些字段的组合时添加其他性能。
就像你说'排序之前的时间戳值,这基本上就是索引的作用。你可以像这样创建一个索引:
CREATE INDEX idx_table
ON TABLE yourtable (A)
AS 'index.handler.class.name'
或综合指数:
CREATE INDEX idx_table2
ON TABLE yourtable (A, B, C)
AS 'index.handler.class.name'
有关在Hive中创建索引的信息,请阅读此处的文档:
答案 1 :(得分:1)
你的桌子分区了吗?如果没有,我建议你创建一个新的分区外部表(基于URL)并将数据从旧表加载到新表。您需要在此处使用动态分区。这肯定会提高性能。
此外,根据ID字段的基数,您可能希望根据ID存储数据。