-- 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);