【问题标题】:Query is taking long time to execute in Vertica在 Vertica 中执行查询需要很长时间
【发布时间】:2021-02-09 10:19:42
【问题描述】:

我有一个查询要执行,它将根据表中的最新日期返回数据。

查询如下:

SELECT 
  *
FROM
  demo,
  (select * from ACCOUNT where day_id=select max(day_id) from ACCOUNT)ACCOUNT,
  (select * from CUSTOMER where day_id=select max(day_id) from CUSTOMER) CUSTOMER,
  (select * from SBSCRPN where  day_id=select max(day_id) from SBSCRPN) SBSCRPN,
  (select * from TIME where DAY_ID=select max(DAY_ID) from TIME) TIME
   WHERE
  ( CUSTOMER.DAY_ID=ACCOUNT.DAY_ID and CUSTOMER.PARTY_ID=ACCOUNT.PARTY_ID  )
  AND  ( ACCOUNT.DAY_ID=SBSCRPN.DAY_ID and ACCOUNT.ACCT_ID=SBSCRPN.ACCT_ID  )
  AND  ( CUSTOMER.ORG_PARTY_ID=demo.ORG_PARTY_ID  )
  AND  ( TIME.DAY_ID=CUSTOMER.DAY_ID  )

此查询需要大量时间来执行。 但是,当我在表中给出硬编码的最新日期(day_id 值)时,它会在 40-50 秒内给出响应。

SELECT 
  *
FROM
  demo,
  (select * from ACCOUNT where day_id='2021-02-07')ACCOUNT,
  (select * from CUSTOMER where day_id='2021-02-07') CUSTOMER,
  (select * from SBSCRPN where  day_id='2021-02-07') SBSCRPN,
  (select * from TIME where DAY_ID='2021-02-07') from TIME) TIME
  WHERE
  ( CUSTOMER.DAY_ID=ACCOUNT.DAY_ID and CUSTOMER.PARTY_ID=ACCOUNT.PARTY_ID  )
  AND  ( ACCOUNT.DAY_ID=SBSCRPN.DAY_ID and ACCOUNT.ACCT_ID=SBSCRPN.ACCT_ID  )
  AND  ( CUSTOMER.ORG_PARTY_ID=demo.ORG_PARTY_ID  )
  AND  ( TIME.DAY_ID=CUSTOMER.DAY_ID  )

那么,任何人都可以帮助我理解为什么在 inlineview 中使用 max 函数需要时间。有没有人可以帮助我们如何在不对查询中的值进行硬编码的情况下获得更快的结果。

仅供参考,很少有表包含大量数据,如下所示:

DEMO;
55624

ACCOUNT;
426415370 ~426M

CUSTOMER;
1827947548 ~1.8B

SBSCRPN;
582688964 ~582M

TIME;
11323

【问题讨论】:

    标签: vertica


    【解决方案1】:

    根据您提到的硬编码解决方案,在查询之外计算最大值可能会加速查询执行。在 Vertica 中,您可以define variables 并将它们传递给您的 SQL 查询。例如,:max 可以在您的查询 where 中使用而不是 select max(day_id) from account

    \set max `vsql -At -c "select max(day_id) from account;"`
    \echo :max
    

    然后你可以重写你的查询如下:

    select * from account where day_id=:max
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2019-12-29
      • 2021-12-25
      • 2016-06-17
      相关资源
      最近更新 更多