【发布时间】: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