问题:我有一个子查询,它在日历表和库存表上进行内部联接,这种情况很慢,需要加快速度。目前的速度约为120秒。
通常,目的是使用此数据集来计算一年中每一天每种产品的库存水平。
为了加快速度,我可以在日历的日常日期字段(daily_date是唯一的)上放置一个索引来加速查询吗?和/或start_date和end_dates时间戳字段?我不清楚索引的最佳实践。
日历表有一个每日日期字段,该字段在start_date和end_date之间的范围内连接到stock表:
select dd.daily_date, t.stock_product_name, t.stock_id
, (12 * extract('years' from (t.warehouse_eta - dd.date_field))) + (30 * extract('months' from (t.warehouse_eta - dd.date_field))) + (extract('days' from (t.warehouse_eta - dd.date_field))) as delivery_time
from a.dates dd
inner join stock_availability t on ((dd.daily_date >= t.start_date) and (dd.daily_date <= t.end_date or t.end_date is null))
where dd.daily_date >= '2017-01-01' and dd.daily_date <= current_date
(我现在打开很多关于索引的Windows标签,但阅读速度很慢。任何介绍链接也都很感激。)