1

我开始在 Aginity 上与 Netezza 合作,以处理每张表的数百万条记录。我一直在网上阅读有关如何优化表的信息,以便加载数据并在其上运行查询相对较快,我有几个问题。

1)我读到的一件事是,您在创建表时选择的分布会影响您查询表的速度。在大多数情况下,最好在主键上分发吗?假设没有主键,但表中有外键,是分布在两个外键上还是一个外键上好?

2)我通过运行以下查询了解了您可以查看表格偏斜的方式(我猜这很大程度上取决于您的分布):

SELECT count(*), datasliceid from SCHEMA.TableName group by datascliceid ordery by datasliceid

因此,在执行此操作时,我注意到每个 datasliceid 的最小数据数为 21,530,最大值为 22,456。返回了 240 个 datasliceid。这是好的还是应该更均匀地分布数据?

3)最后但并非最不重要的一点是,我正在尝试运行:

generate statistics on SCHEMA.TABLENAME

在 Aginity 内部,但当我这样做时,我只是收到消息The command completed successfully,但什么也没显示。我如何查看这些信息?

4

1 回答 1

2

我会试一试:1)只担心真正大表的分布(在所有小型/中型表上随机)除此之外:只分布在一个列上,并且只有当你加入很多2)在我看来,这种分布并没有倾斜。不用担心。3)当您更新数据库中的统计信息时,主要是为了数据库优化器在您针对它运行(复杂)sql时做出更好的选择。但是,您可以在之后从目录表中读取该信息。可以在网上找到查询:)

于 2018-10-21T22:05:43.573 回答