unis_sip/sql/202090918update.sql

32 lines
2.4 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

-- =============================================================
-- 发货「撤回 / 作废」性能优化:补充缺失索引
-- 功能说明:
-- 撤回 / 作废会按出库单号、入库单号、SN 等维度反复查询应收 / 应付单及其明细,
-- 相关列缺少索引时会走全表扫描(例如 oms_inventory_delivery_detail 原先只有主键索引,
-- 按 delivery_id 查询需要扫描 4.8 万行,单次耗时约 43ms导致撤回过程明显变慢。
-- 本脚本仅新增二级索引,不改表结构、不改动任何数据。
-- 测试库实测效果:
-- 财务单据审批状态检查 193ms -> 35ms
-- listByOuterCodeViaDelivery 43ms -> 20ms
-- 说明:
-- 使用 ALGORITHM=INPLACE, LOCK=NONE 在线加索引,过程中不锁表;
-- 若目标环境 MySQL 版本不支持该子句,可去掉后执行(表数据量大时注意选择低峰期)。
-- =============================================================
-- 1. 发货记录明细撤回时按发货记录、SN 反复查询
ALTER TABLE `oms_inventory_delivery_detail` ADD INDEX `idx_delivery_id` (`delivery_id`), ALGORITHM=INPLACE, LOCK=NONE;
ALTER TABLE `oms_inventory_delivery_detail` ADD INDEX `idx_product_sn` (`product_sn`), ALGORITHM=INPLACE, LOCK=NONE;
-- 2. 应收 / 应付单:按出库单号、入库单号查询
ALTER TABLE `oms_payable_bill` ADD INDEX `idx_inventory_code` (`inventory_code`), ALGORITHM=INPLACE, LOCK=NONE;
ALTER TABLE `oms_receivable_bill` ADD INDEX `idx_inventory_code` (`inventory_code`), ALGORITHM=INPLACE, LOCK=NONE;
-- 3. 四类财务单据明细:审批状态检查时按关联单号(付款单/收票单/收款单/开票单)查询
ALTER TABLE `oms_payable_payment_detail` ADD INDEX `idx_payment_bill_code` (`payment_bill_code`), ALGORITHM=INPLACE, LOCK=NONE;
ALTER TABLE `oms_payable_ticket_detail` ADD INDEX `idx_ticket_bill_code` (`ticket_bill_code`), ALGORITHM=INPLACE, LOCK=NONE;
ALTER TABLE `oms_receivable_receipt_detail` ADD INDEX `idx_receipt_bill_code` (`receipt_bill_code`), ALGORITHM=INPLACE, LOCK=NONE;
ALTER TABLE `oms_receivable_invoice_detail` ADD INDEX `idx_invoice_bill_code` (`invoice_bill_code`), ALGORITHM=INPLACE, LOCK=NONE;
-- 4. 出库单:按合同号统计有效出库单数量(撤回后回退订单出库状态时使用)
ALTER TABLE `oms_inventory_outer` ADD INDEX `idx_order_code` (`order_code`), ALGORITHM=INPLACE, LOCK=NONE;