9f8bf041c3
fix: 修复测试配置和依赖检查 perf: 优化雪花算法性能 refactor: 清理冗余代码和未使用的导入 style: 统一代码格式和注释 test: 添加单元测试和集成测试 ci: 更新CI配置和构建脚本 chore: 更新依赖和配置文件
105 lines
4.7 KiB
SQL
105 lines
4.7 KiB
SQL
-- Performance Optimization SQL Script
|
|
-- This script adds necessary indexes to improve query performance
|
|
|
|
-- Enable slow query logging (PostgreSQL)
|
|
ALTER SYSTEM SET log_min_duration_statement = 1000;
|
|
SELECT pg_reload_conf();
|
|
|
|
-- ============================================
|
|
-- User Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_users_username ON sys_users(username);
|
|
CREATE INDEX IF NOT EXISTS idx_users_email ON sys_users(email);
|
|
CREATE INDEX IF NOT EXISTS idx_users_status ON sys_users(status);
|
|
CREATE INDEX IF NOT EXISTS idx_users_deleted_at ON sys_users(deleted_at);
|
|
CREATE INDEX IF NOT EXISTS idx_users_created_at ON sys_users(created_at);
|
|
|
|
-- ============================================
|
|
-- Role Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_roles_role_key ON sys_roles(role_key);
|
|
CREATE INDEX IF NOT EXISTS idx_roles_role_name ON sys_roles(role_name);
|
|
CREATE INDEX IF NOT EXISTS idx_roles_status ON sys_roles(status);
|
|
CREATE INDEX IF NOT EXISTS idx_roles_deleted_at ON sys_roles(deleted_at);
|
|
|
|
-- ============================================
|
|
-- Menu Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_menus_parent_id ON sys_menus(parent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_menus_status ON sys_menus(status);
|
|
CREATE INDEX IF NOT EXISTS idx_menus_menu_type ON sys_menus(menu_type);
|
|
|
|
-- ============================================
|
|
-- Config Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_sys_config_config_key ON sys_config(config_key);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_config_deleted_at ON sys_config(deleted_at);
|
|
|
|
-- ============================================
|
|
-- Notice Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_sys_notice_status ON sys_notice(status);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_notice_deleted_at ON sys_notice(deleted_at);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_notice_created_at ON sys_notice(created_at);
|
|
|
|
-- ============================================
|
|
-- File Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_sys_file_file_name ON sys_file(file_name);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_file_file_type ON sys_file(file_type);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_file_deleted_at ON sys_file(deleted_at);
|
|
|
|
-- ============================================
|
|
-- Dictionary Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_dictionary_type ON dictionary(type);
|
|
CREATE INDEX IF NOT EXISTS idx_dictionary_code ON dictionary(code);
|
|
CREATE INDEX IF NOT EXISTS idx_dictionary_type_code ON dictionary(type, code);
|
|
CREATE INDEX IF NOT EXISTS idx_dictionary_deleted_at ON dictionary(deleted_at);
|
|
|
|
-- ============================================
|
|
-- Dict Type Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_sys_dict_type_dict_type ON sys_dict_type(dict_type);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_dict_type_deleted_at ON sys_dict_type(deleted_at);
|
|
|
|
-- ============================================
|
|
-- Dict Data Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_sys_dict_data_dict_type ON sys_dict_data(dict_type);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_dict_data_dict_code ON sys_dict_data(dict_code);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_dict_data_deleted_at ON sys_dict_data(deleted_at);
|
|
|
|
-- ============================================
|
|
-- User Message Table Indexes
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_sys_user_message_user_id ON sys_user_message(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_user_message_is_read ON sys_user_message(is_read);
|
|
CREATE INDEX IF NOT EXISTS idx_sys_user_message_deleted_at ON sys_user_message(deleted_at);
|
|
|
|
-- ============================================
|
|
-- Composite Indexes for Common Queries
|
|
-- ============================================
|
|
CREATE INDEX IF NOT EXISTS idx_users_status_deleted ON sys_users(status, deleted_at);
|
|
CREATE INDEX IF NOT EXISTS idx_roles_status_deleted ON sys_roles(status, deleted_at);
|
|
|
|
-- ============================================
|
|
-- Analyze Tables After Index Creation
|
|
-- ============================================
|
|
ANALYZE sys_users;
|
|
ANALYZE sys_roles;
|
|
ANALYZE sys_menus;
|
|
ANALYZE sys_config;
|
|
ANALYZE sys_notice;
|
|
ANALYZE sys_file;
|
|
ANALYZE dictionary;
|
|
ANALYZE sys_dict_type;
|
|
ANALYZE sys_dict_data;
|
|
ANALYZE sys_user_message;
|
|
|
|
-- ============================================
|
|
-- Query Performance Verification
|
|
-- ============================================
|
|
-- Use EXPLAIN ANALYZE to verify query performance
|
|
-- Example: EXPLAIN ANALYZE SELECT * FROM sys_users WHERE username = 'testuser';
|