perf(database): 优化数据库配置和用户查询性能
- 更新 Redis 配置为本地 1Panel 实例 - 为 UserMapper 查询添加 LIMIT 1 限制 - 为 credit_user 表创建多个复合索引以提升查询效率 - 添加租户、公司、用户维度的索引支持 - 优化默认分页排序的索引覆盖 - 包含统计关联数的索引优化
This commit is contained in:
34
docs/sql/2026-03-18_credit_user_add_indexes.sql
Normal file
34
docs/sql/2026-03-18_credit_user_add_indexes.sql
Normal file
@@ -0,0 +1,34 @@
|
||||
-- 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);
|
||||
|
||||
Reference in New Issue
Block a user