-- credit_user 索引优化（MySQL/InnoDB）
--
-- 背景：
-- - credit_user 列表分页默认排序：sort_number asc, create_time desc
-- - 常见过滤：tenant_id（TenantLine 自动追加）、deleted=0、company_id、user_id、create_time 范围
-- - 统计/刷新关联数：WHERE deleted=0 AND company_id IN (...) GROUP BY company_id
--
-- 使用前建议先查看现有索引，避免重复：
--   SHOW INDEX FROM credit_user;
--
-- 注意：
-- - 大表加索引会消耗 IO/CPU，建议在低峰执行。
-- - MySQL 8 可考虑：ALTER TABLE ... ALGORITHM=INPLACE, LOCK=NONE（视版本/引擎而定）。

-- 1) 覆盖默认分页排序 + 逻辑删除 + 租户隔离
--    典型：WHERE tenant_id=? AND deleted=0 ORDER BY sort_number, create_time DESC LIMIT ...
CREATE INDEX idx_credit_user_tenant_deleted_sort_create_id
    ON credit_user (tenant_id, deleted, sort_number, create_time, id);

-- 2) 企业维度查询/统计（也服务于 credit_company 记录数刷新）
--    典型：WHERE tenant_id=? AND company_id=? AND deleted=0 ...
--    典型：WHERE tenant_id=? AND deleted=0 AND company_id IN (...) GROUP BY company_id
CREATE INDEX idx_credit_user_tenant_company_deleted
    ON credit_user (tenant_id, company_id, deleted);

-- 3) 用户维度查询（后台常按录入人/负责人筛选）
--    典型：WHERE tenant_id=? AND user_id=? AND deleted=0 ...
CREATE INDEX idx_credit_user_tenant_user_deleted
    ON credit_user (tenant_id, user_id, deleted);

-- 可选：如果你们经常按 type 过滤（0/1），再加这个（否则先别加，避免过多索引影响写入）
-- CREATE INDEX idx_credit_user_tenant_type_deleted
--     ON credit_user (tenant_id, type, deleted);

