-- ============================================
-- 优化 get-dashboard-data 接口性能的索引
-- ============================================
-- 说明：这些索引专门为仪表盘接口优化
-- 执行前请检查索引是否已存在，避免重复创建

-- ============================================
-- 1. lq_kd_kdjlb (开单记录表) 索引
-- ============================================
-- 用于：门店业绩汇总、健康师业绩汇总、最高开单金额会员查询
-- 查询条件：F_IsEffective, kdrq (时间范围), djmd (门店ID)

-- 索引：用于时间范围查询和门店统计（如果已存在 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);

-- ============================================
-- 2. lq_hytk_hytk (退卡表) 索引
-- ============================================
-- 用于：退卡金额统计
-- 查询条件：F_IsEffective, tksj (退卡时间)

-- 索引：用于时间范围查询
CREATE INDEX IF NOT EXISTS idx_hytk_effective_date 
ON lq_hytk_hytk(F_IsEffective, tksj);

-- ============================================
-- 3. lq_xh_hyhk (耗卡记录表) 索引
-- ============================================
-- 用于：消耗业绩汇总、最高消耗金额会员查询
-- 查询条件：F_IsEffective, hksj (耗卡时间), hy (会员ID)

-- 索引1：用于时间范围查询
CREATE INDEX IF NOT EXISTS idx_xh_hyhk_effective_date 
ON lq_xh_hyhk(F_IsEffective, hksj);

-- 索引2：用于会员统计（补充）
CREATE INDEX IF NOT EXISTS idx_xh_hyhk_member_effective 
ON lq_xh_hyhk(hy, F_IsEffective, hksj);

-- ============================================
-- 4. lq_xh_pxmx (耗卡品项明细表) 索引
-- ============================================
-- 用于：消耗业绩汇总（JOIN）
-- 查询条件：F_ConsumeInfoId, F_IsEffective

-- 索引：用于JOIN（如果已存在可跳过）
-- CREATE INDEX IF NOT EXISTS idx_xh_pxmx_consume_effective 
-- ON lq_xh_pxmx(F_ConsumeInfoId, F_IsEffective);

-- ============================================
-- 5. lq_khxx (客户信息表) 索引
-- ============================================
-- 用于：会员统计汇总、会员类型分布、最高剩余权益会员
-- 查询条件：F_IsEffective, khlx (客户类型), F_CreateTime, F_SleepDays, F_RemainingRightsAmount

-- 索引1：用于会员类型和有效性过滤（最常用）
CREATE INDEX IF NOT EXISTS idx_khxx_type_effective 
ON lq_khxx(khlx, F_IsEffective);

-- 索引2：用于创建时间统计（新会员统计）
CREATE INDEX IF NOT EXISTS idx_khxx_create_time 
ON lq_khxx(F_CreateTime, F_IsEffective, khlx);

-- 索引3：用于剩余权益排序（最高剩余权益会员）
CREATE INDEX IF NOT EXISTS idx_khxx_remaining_effective 
ON lq_khxx(F_RemainingRightsAmount, F_IsEffective);

-- ============================================
-- 6. 验证索引创建
-- ============================================
-- 验证索引是否创建成功
-- 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_hytk_hytk', 'lq_xh_hyhk', 'lq_xh_pxmx', 'lq_khxx')
--     AND INDEX_NAME LIKE 'idx_%'
-- ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX;

