- 更新 Redis 配置为本地 1Panel 实例 - 为 UserMapper 查询添加 LIMIT 1 限制 - 为 credit_user 表创建多个复合索引以提升查询效率 - 添加租户、公司、用户维度的索引支持 - 优化默认分页排序的索引覆盖 - 包含统计关联数的索引优化
35 lines
1.7 KiB
SQL
35 lines
1.7 KiB
SQL
-- 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);
|
||
|