Files
biz-api-cloud-zax/db/20260915_add_hard_order_parent_car_index.sql
T
2026-09-15 17:42:30 +08:00

29 lines
1.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 购物车商品记录页(/hard/hard-car-record)查询索引。
-- 幂等迁移脚本:可反复执行。索引先查 information_schema,已存在则跳过(执行 SELECT 1 占位),
-- 不存在才执行 DDL;已应用过的库重跑不会报 Duplicate key。
-- 背景:记录页与导出按 hard_car a JOIN hard_parent_car p(a.parent_car_id = p.id)
-- JOIN hard_order o(o.parent_car_id = p.id)关联,hard_order.parent_car_id 此前无索引,
-- 量级增长后三表 HASH JOIN 全表扫描会成为列表与导出的共同瓶颈。
-- 【可选诊断】两表 parent_car_id 现有索引。
SELECT INDEX_NAME, GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX SEPARATOR ',') AS index_columns
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'pjcloudx_hardware'
AND TABLE_NAME IN ('hard_car', 'hard_order', 'hard_parent_car')
AND COLUMN_NAME = 'parent_car_id'
GROUP BY TABLE_NAME, INDEX_NAME;
-- hard_order 关联索引:缺失才创建(含租户与删除标记,与既有组合索引风格一致)。
SET @ddl = (SELECT IF(COUNT(*) = 0,
'ALTER TABLE `pjcloudx_hardware`.`hard_order` ADD KEY `idx_hard_order_parent_tenant_del` (`parent_car_id`, `tenant_id`, `del_flag`)',
'SELECT 1')
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'pjcloudx_hardware' AND TABLE_NAME = 'hard_order' AND INDEX_NAME = 'idx_hard_order_parent_tenant_del');
PREPARE stmt FROM @ddl;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- hard_parent_car 主键已覆盖 p.id 关联,无需新增;hard_car 侧已有
-- idx_hard_car_parent_tenant_del(parent_car_id, tenant_id, del_flag),无需新增。
-- 以上判断依据上方诊断查询输出,重跑时可复核。