我有一个名为'item'的表,大约有8500行,另一个名为'stock'的表存储了日期和位置的项目库存(我有2个库存位置)。
Stock表结构如下:
In [26]: np.count_nonzero(a[:2,:2])
Out[26]: 3
每当任何物品从 - 或 - 到商店移动时,都会在Stock表中插入一行,其中包含特定物品的更新库存数据。目前Stock表包含大约125,000行。
现在我有一个函数需要两个日期参数(adt_from和adt_to),并检索两个日期每个位置的每个项目的股票,即在每个位置打开和关闭项目库存,并对股票进行一些其他计算。 ..
下面是功能部分,需要花费非常长的时间(差不多15分钟)。
” - 变量声明
stock_dt date - Stores the Date of Stock,
loc_id varchar(3) - Stores the Location of Stock,
item_id varchar(6) - Stores the Item Code,
item_qty decimal(20,2) - Stores the Item Stock Quantity,
item_cost decimal(20,2) - Stores the Item Stock Cost Value
“
股票表在stock_dt,loc_id和item_id上编入索引。
我尝试启用query_cache并将query_cache_size设置为128M,但似乎没有任何改进。
我评论了Stock上的2个查询,程序只需几秒钟即可完成剩余的执行。有什么建议吗?
答案 0 :(得分:0)
我想这里的问题是由那些ORDER BY引起的。
假设你有(项目,地点,日期)的综合指数,我认为你需要
ORDER BY item desc, location desc, date desc
为了使搜索从正确的结束开始并在1次点击后返回。
原因是即使它会击中一个项目的复合索引(项目,位置,日期),它也会在最重要的列的方向上遍历索引(隐式ORDER BY项目ASC,位置ASC) 。因此,需要扫描整个项目的部分历史记录以获取最新记录。
我会尝试评论ORDER BY,看看是否是导致问题的原因。