背景:我是Redshift和PostgreSQL的新手,并且想知道如何提高查询性能。我需要有关 执行时间 ,已用内存量或我运行的查询中其他相关指标的反馈。
问题:是否有一个简单的SQL命令/方法(?)(至少一个粗略的想法)来确定查询中哪些区域需要花费最多的时间来执行?
其他信息:我经常使用这样的通用表表达式:
WITH level1 as (SELECT Customerid
FROM customer_tbl
WHERE year > 2000),
level2 as (SELECT level1.Customerid,
purchasing_tbl.item,
purchasing_tbl.price
FROM level1
LEFT JOIN purchasing_tbl
ON purchasing_tbl.id = level1.Customerid
通常,这种类型的结构可能具有10个以上的级别,通常包括很多麻烦(就更多的联接而言,情况是,窗口函数具有不同的聚合)。
在尝试提高性能时,了解例如与level2相比,level10花费了多少时间。
客户端:我使用DBeaver 5.1.1。
答案 0 :(得分:0)
STL_QUERY是Redshift中的一个系统视图,其中包含查询时间: https://docs.aws.amazon.com/redshift/latest/dg/r_STL_QUERY.html
从stl_query中选择开始时间,结束时间*,其中querytxt ='' 按启动时间顺序排序 限制100;
答案 1 :(得分:0)
有很多方法可以了解次优查询。
下面的链接提供了不同的步骤来进行相同的检查。
AWS提供了一些实用程序-在GIT Hub中可用。
https://github.com/awslabs/amazon-redshift-utils
这两种材料在调整查询方面都非常有用。
关于, 拉玛