客制的杂项出库功能非常慢,初步测试后的原因如下:
因为精细到每一片磊晶片,数据量增长非常快,期初+第一个月的数据量就达到500w。
导致有些验证程序非常缓慢。
例一:
DECLARE
v_ava_qty NUMBER;
BEGIN
v_ava_qty := inv_item_inq.get_available_qty(p_organization_id => 83,
p_inventory_item_id => 1317,
p_revision => NULL,
p_subinventory_code => 'B01',
p_locator_id => 15,
p_lot_number => 'BEHA1MX-TP1B331A01',
p_cost_group_id => -1,
p_revision_control => 'FALSE',
p_lot_control => 'TRUE',
p_serial_control => 'FALSE');
dbms_output.put_line(v_ava_qty);
END;
出货时,需要检查可用量>=出货量。
使用这个程序获得可用量,非常慢,这个在开发环境中,因为数据量比较少的原因,没有发现这个程序居然那么慢。
后面改成:
SELECT SUM(moq.transaction_quantity)
INTO p_onhand_qty
FROM mtl_onhand_quantities moq
WHERE moq.organization_id = p_inv_org_id
AND moq.subinventory_code = p_subinv
AND nvl(moq.locator_id, -1) = nvl(p_locator_id, -1)
AND moq.inventory_item_id = p_item_id
AND moq.lot_number = p_lot_number;
SELECT SUM(mr.primary_reservation_quantity)
INTO p_res_qty
FROM mtl_reservations mr
WHERE mr.organization_id = p_inv_org_id
AND mr.subinventory_code = p_subinv
AND mr.supply_source_type_id = 13
AND nvl(mr.locator_id, -1) = nvl(p_locator_id, -1)
AND mr.inventory_item_id = p_item_id
AND mr.lot_number = p_lot_number;
RETURN nvl(p_onhand_qty, 0) - nvl(p_res_qty, 0);