-- ============================================
-- 优化 get-store-monthly-trend 接口性能的索引
-- ============================================
-- 说明：这些索引专门为门店月度趋势接口优化
-- 执行前请检查索引是否已存在，避免重复创建

-- ============================================
-- 1. lq_kd_kdjlb (开单记录表) 索引
-- ============================================
-- 用于：开单业绩按月统计
-- 查询条件：djmd (门店ID), F_IsEffective, kdrq (开单日期)
-- 分组：DATE_FORMAT(kdrq, '%Y%m')

-- 索引：用于门店+时间范围查询（如果已存在 idx_kd_kdjlb_store_date_effective 可跳过）
-- CREATE INDEX IF NOT EXISTS idx_kd_kdjlb_store_date_effective 
-- ON lq_kd_kdjlb(djmd, kdrq, F_IsEffective);

-- 补充索引：用于月份分组查询（优化GROUP BY性能）
CREATE INDEX IF NOT EXISTS idx_kd_kdjlb_store_date_month 
ON lq_kd_kdjlb(djmd, F_IsEffective, kdrq);

-- ============================================
-- 2. lq_xh_hyhk (耗卡记录表) 索引
-- ============================================
-- 用于：消耗业绩按月统计
-- 查询条件：md (门店ID), F_IsEffective, hksj (耗卡时间)
-- 分组：DATE_FORMAT(hksj, '%Y%m')

-- 索引：用于门店+时间范围查询
CREATE INDEX IF NOT EXISTS idx_xh_hyhk_store_date_month 
ON lq_xh_hyhk(md, F_IsEffective, hksj);

-- ============================================
-- 3. lq_hytk_hytk (退卡表) 索引
-- ============================================
-- 用于：退卡金额按月统计
-- 查询条件：md (门店ID), F_IsEffective, tksj (退卡时间)
-- 分组：DATE_FORMAT(tksj, '%Y%m')

-- 索引：用于门店+时间范围查询（如果已存在 idx_hytk_effective_date 可跳过）
-- CREATE INDEX IF NOT EXISTS idx_hytk_effective_date 
-- ON lq_hytk_hytk(F_IsEffective, tksj);

-- 补充索引：用于门店+时间范围查询（优化门店维度查询）
CREATE INDEX IF NOT EXISTS idx_hytk_store_date_month 
ON lq_hytk_hytk(md, F_IsEffective, tksj);

-- ============================================
-- 4. 验证索引创建
-- ============================================
-- 验证索引是否创建成功
-- SELECT 
--     TABLE_NAME,
--     INDEX_NAME,
--     COLUMN_NAME,
--     SEQ_IN_INDEX
-- FROM INFORMATION_SCHEMA.STATISTICS
-- WHERE TABLE_SCHEMA = DATABASE()
--     AND TABLE_NAME IN ('lq_kd_kdjlb', 'lq_xh_hyhk', 'lq_hytk_hytk')
--     AND INDEX_NAME LIKE 'idx_%'
-- ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX;

