59 lines
3.0 KiB
MySQL
59 lines
3.0 KiB
MySQL
|
|
-- ============================================================================
|
|||
|
|
-- 甲方报价系统优化 - 数据库迁移脚本
|
|||
|
|
-- 日期: 2026-06-01
|
|||
|
|
-- 说明:
|
|||
|
|
-- 1. biz_client_quote_item 表添加 material_id 字段,建立与物料表的正式关联
|
|||
|
|
-- 2. 添加必要的索引优化查询性能
|
|||
|
|
-- 3. 添加统计数据辅助字段
|
|||
|
|
-- 4. 修复历史数据中的 material_id 关联
|
|||
|
|
-- ============================================================================
|
|||
|
|
|
|||
|
|
-- ============================================================================
|
|||
|
|
-- PART 1: 甲方报价明细表 - 添加 material_id 字段
|
|||
|
|
-- ============================================================================
|
|||
|
|
ALTER TABLE biz_client_quote_item
|
|||
|
|
ADD COLUMN material_id BIGINT DEFAULT NULL COMMENT '关联物料ID(biz_material.material_id)' AFTER quote_id;
|
|||
|
|
|
|||
|
|
-- 创建索引以加速按物料查询
|
|||
|
|
CREATE INDEX idx_cqi_quote_id ON biz_client_quote_item (quote_id);
|
|||
|
|
CREATE INDEX idx_cqi_material_id ON biz_client_quote_item (material_id);
|
|||
|
|
|
|||
|
|
-- ============================================================================
|
|||
|
|
-- PART 2: 甲方报价主表 - 添加统计优化索引
|
|||
|
|
-- ============================================================================
|
|||
|
|
CREATE INDEX idx_cq_create_time ON biz_client_quote (create_time);
|
|||
|
|
CREATE INDEX idx_cq_client_name ON biz_client_quote (client_name);
|
|||
|
|
CREATE INDEX idx_cq_status ON biz_client_quote (status);
|
|||
|
|
|
|||
|
|
-- ============================================================================
|
|||
|
|
-- PART 3: 修复历史数据 - 通过物料名称匹配回填 material_id
|
|||
|
|
-- ============================================================================
|
|||
|
|
-- 注意: 此操作为一次性数据修复,基于 material_name 精确匹配。
|
|||
|
|
-- 如果存在同名的多个物料,只会关联第一个匹配到的物料ID。
|
|||
|
|
-- 请在执行前确认数据准确性。
|
|||
|
|
UPDATE biz_client_quote_item cqi
|
|||
|
|
JOIN biz_material m ON cqi.material_name = m.material_name
|
|||
|
|
SET cqi.material_id = m.material_id
|
|||
|
|
WHERE cqi.material_id IS NULL
|
|||
|
|
AND cqi.material_name IS NOT NULL
|
|||
|
|
AND cqi.material_name != '';
|
|||
|
|
|
|||
|
|
-- ============================================================================
|
|||
|
|
-- PART 4: 验证数据修复结果
|
|||
|
|
-- ============================================================================
|
|||
|
|
-- 检查仍有未关联的记录数(如果 > 0,说明有些物料名称在 biz_material 表中不存在)
|
|||
|
|
-- SELECT COUNT(*) AS unlinked_count
|
|||
|
|
-- FROM biz_client_quote_item
|
|||
|
|
-- WHERE material_id IS NULL AND material_name IS NOT NULL AND material_name != '';
|
|||
|
|
|
|||
|
|
-- 查看关联情况统计
|
|||
|
|
-- SELECT
|
|||
|
|
-- CASE WHEN cqi.material_id IS NOT NULL THEN '已关联' ELSE '未关联' END AS status,
|
|||
|
|
-- COUNT(*) AS count
|
|||
|
|
-- FROM biz_client_quote_item cqi
|
|||
|
|
-- GROUP BY CASE WHEN cqi.material_id IS NOT NULL THEN '已关联' ELSE '未关联' END;
|
|||
|
|
|
|||
|
|
-- ============================================================================
|
|||
|
|
-- 完成
|
|||
|
|
-- ============================================================================
|