即使创建索引,查询也需要花费较长时间执行

问题描述 投票:0回答:1

我有表DB_TBL,其中每月5日从工具中插入历史数据。作为其历史数据,插入的行数非常大。例如,我检查了本月的计数及其1626521。

此表包含50列。但我有兴趣只检查5列。前端有gui使用这5列,我在其中提供过滤器以每次获取一个月的数据,例如上个月的日期为01.01.2020和31.01.2020之间的闭包日期。

Select Client_key, Portfolia_Name, Closure_date, 
    Currency_Type, Balance from DB_TBL        
    where CLOSURE_DATE between 
    to_date ('01.01.2020','dd.mm.yyyy') and to_date ('31.01.2020','dd.mm.yyyy');

此查询非常慢,需要30多分钟才能运行。这个问题与我从gui遇到的相同问题非常关键。我提供了Closure_date列的索引。但是它仍然不能提高性能。

有什么方法可以改善查询性能?也许我可以创建Virtual based index或创建View吗?

sql oracle indexing query-performance
1个回答
0
投票

首先,我将使用日期文字编写查询:

Select Client_key, Portfolia_Name, Closure_date, Currency_Type, Balance
from DB_TBL
where CLOSURE_DATE between date '2020-01-01' and date '2020-01-31'

对于此查询,您想要db_tbl(closure_date)上的索引。

© www.soinside.com 2019 - 2024. All rights reserved.