我开始在Aginity上与Netezza合作,为每个表处理数百万条记录。我一直在网上阅读如何优化表格,以便加载数据和运行查询相对较快,我有几个问题。
1(我读到的一件事是,您在创建表时选择的分布会影响您查询表的速度。在大多数情况下,最好在主键上分发吗?假设表中没有主键,而是有外键,那么在两个外键上还是只在外键上分布好吗?
2(我读到了通过运行此查询来查看表的偏斜的方式(我想这在很大程度上取决于您的分布(:
SELECT count(*), datasliceid from SCHEMA.TableName group by datascliceid ordery by datasliceid
因此,在执行此操作时,我注意到每个数据切片ID的最小数据数为21,530,最大值为22,456。返回了 240 个数据切片。这是好的还是应该更均匀地分布数据?
3(最后但并非最不重要的一点是,我正在尝试运行:
generate statistics on SCHEMA.TABLENAME
在 Aginity 内部,但当我这样做时,我只是收到消息The command completed successfully
但什么都没有出现。如何查看此信息?
我会试一试: 1(只担心真正大的表的分布(在所有小型/中型表上随机( 除此之外:只在一列上分发,并且只有当你加入很多时 2(在我看来,这种分布没有偏差。不用担心。 3( 当您更新数据库中的统计信息时,主要是为了数据库优化器在对它运行(复杂(SQL 时做出更好的选择。但是,您可以在之后从目录表中读回该信息。可以在线找到对此的查询:)