02_create_system_indexes.sql
6.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
-- Apple经销商ERP系统对接项目 - 系统管理表索引创建脚本
-- 创建时间: 2025-01-27
-- 版本: v1.0
-- 设置数据库和字符集
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE apple_erp;
-- =========================================
-- 1. 系统用户表索引
-- =========================================
-- 用户名唯一索引(已通过UNIQUE约束自动创建)
-- CREATE UNIQUE INDEX uk_user_username ON t_sys_user(username);
-- 查询优化索引
CREATE INDEX idx_user_status ON t_sys_user(status);
CREATE INDEX idx_user_create_time ON t_sys_user(create_time);
CREATE INDEX idx_user_last_login ON t_sys_user(last_login_time);
CREATE INDEX idx_user_del_flag ON t_sys_user(del_flag);
-- 复合查询索引
CREATE INDEX idx_user_complex_query ON t_sys_user(status, del_flag, create_time);
-- =========================================
-- 2. 系统角色表索引
-- =========================================
-- 角色编码唯一索引(已通过UNIQUE约束自动创建)
-- CREATE UNIQUE INDEX uk_role_code ON t_sys_role(role_code);
-- 查询优化索引
CREATE INDEX idx_role_status ON t_sys_role(status);
CREATE INDEX idx_role_create_time ON t_sys_role(create_time);
CREATE INDEX idx_role_del_flag ON t_sys_role(del_flag);
-- 复合查询索引
CREATE INDEX idx_role_complex_query ON t_sys_role(status, del_flag, create_time);
-- =========================================
-- 3. 用户角色关联表索引
-- =========================================
-- 外键索引
CREATE INDEX idx_user_role_user_id ON t_sys_user_role(user_id);
CREATE INDEX idx_user_role_role_id ON t_sys_user_role(role_id);
-- 唯一约束索引(防止重复关联)
CREATE UNIQUE INDEX uk_user_role_unique ON t_sys_user_role(user_id, role_id, del_flag);
-- 查询优化索引
CREATE INDEX idx_user_role_del_flag ON t_sys_user_role(del_flag);
-- =========================================
-- 4. 系统菜单表索引
-- =========================================
-- 父菜单索引
CREATE INDEX idx_menu_parent_id ON t_sys_menu(parent_id);
-- 查询优化索引
CREATE INDEX idx_menu_type ON t_sys_menu(menu_type);
CREATE INDEX idx_menu_status ON t_sys_menu(status);
CREATE INDEX idx_menu_sort ON t_sys_menu(sort);
CREATE INDEX idx_menu_del_flag ON t_sys_menu(del_flag);
-- 复合查询索引
CREATE INDEX idx_menu_complex_query ON t_sys_menu(parent_id, menu_type, status, del_flag, sort);
-- 权限查询索引
CREATE INDEX idx_menu_perms ON t_sys_menu(perms);
-- =========================================
-- 5. 角色菜单关联表索引
-- =========================================
-- 外键索引
CREATE INDEX idx_role_menu_role_id ON t_sys_role_menu(role_id);
CREATE INDEX idx_role_menu_menu_id ON t_sys_role_menu(menu_id);
-- 唯一约束索引(防止重复关联)
CREATE UNIQUE INDEX uk_role_menu_unique ON t_sys_role_menu(role_id, menu_id, del_flag);
-- 查询优化索引
CREATE INDEX idx_role_menu_del_flag ON t_sys_role_menu(del_flag);
-- =========================================
-- 6. 字典类型表索引
-- =========================================
-- 字典类型唯一索引(已通过UNIQUE约束自动创建)
-- CREATE UNIQUE INDEX uk_dict_type ON t_sys_dict_type(dict_type);
-- 查询优化索引
CREATE INDEX idx_dict_type_status ON t_sys_dict_type(status);
CREATE INDEX idx_dict_type_create_time ON t_sys_dict_type(create_time);
CREATE INDEX idx_dict_type_del_flag ON t_sys_dict_type(del_flag);
-- 复合查询索引
CREATE INDEX idx_dict_type_complex_query ON t_sys_dict_type(status, del_flag, create_time);
-- =========================================
-- 7. 字典项表索引
-- =========================================
-- 外键索引
CREATE INDEX idx_dict_item_type_id ON t_sys_dict_item(dict_type_id);
-- 查询优化索引
CREATE INDEX idx_dict_item_sort ON t_sys_dict_item(sort);
CREATE INDEX idx_dict_item_del_flag ON t_sys_dict_item(del_flag);
-- 复合查询索引
CREATE INDEX idx_dict_item_complex_query ON t_sys_dict_item(dict_type_id, sort, del_flag);
-- 字典值查询索引
CREATE INDEX idx_dict_item_value ON t_sys_dict_item(dict_value);
-- =========================================
-- 8. 系统日志表索引
-- =========================================
-- 查询优化索引
CREATE INDEX idx_log_type ON t_sys_log(log_type);
CREATE INDEX idx_log_user_id ON t_sys_log(user_id);
CREATE INDEX idx_log_username ON t_sys_log(username);
CREATE INDEX idx_log_module ON t_sys_log(module);
CREATE INDEX idx_log_time ON t_sys_log(log_time);
CREATE INDEX idx_log_status ON t_sys_log(status);
CREATE INDEX idx_log_del_flag ON t_sys_log(del_flag);
-- 复合查询索引
CREATE INDEX idx_log_complex_query ON t_sys_log(log_type, log_time, user_id, del_flag);
CREATE INDEX idx_log_user_query ON t_sys_log(user_id, log_time, del_flag);
CREATE INDEX idx_log_module_query ON t_sys_log(module, log_time, del_flag);
-- IP查询索引
CREATE INDEX idx_log_ip ON t_sys_log(ip);
-- =========================================
-- 外键约束创建
-- =========================================
-- 用户角色关联表外键
ALTER TABLE t_sys_user_role
ADD CONSTRAINT fk_user_role_user_id
FOREIGN KEY (user_id) REFERENCES t_sys_user(user_id)
ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE t_sys_user_role
ADD CONSTRAINT fk_user_role_role_id
FOREIGN KEY (role_id) REFERENCES t_sys_role(role_id)
ON DELETE CASCADE ON UPDATE CASCADE;
-- 角色菜单关联表外键
ALTER TABLE t_sys_role_menu
ADD CONSTRAINT fk_role_menu_role_id
FOREIGN KEY (role_id) REFERENCES t_sys_role(role_id)
ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE t_sys_role_menu
ADD CONSTRAINT fk_role_menu_menu_id
FOREIGN KEY (menu_id) REFERENCES t_sys_menu(menu_id)
ON DELETE CASCADE ON UPDATE CASCADE;
-- 字典项表外键
ALTER TABLE t_sys_dict_item
ADD CONSTRAINT fk_dict_item_type_id
FOREIGN KEY (dict_type_id) REFERENCES t_sys_dict_type(dict_type_id)
ON DELETE CASCADE ON UPDATE CASCADE;
-- 系统日志表外键(可选,因为日志表可能包含已删除用户的数据)
-- ALTER TABLE t_sys_log
-- ADD CONSTRAINT fk_log_user_id
-- FOREIGN KEY (user_id) REFERENCES t_sys_user(user_id)
-- ON DELETE SET NULL ON UPDATE CASCADE;
-- 重置外键检查
SET FOREIGN_KEY_CHECKS = 1;
-- 脚本执行完成提示
SELECT 'Apple经销商ERP系统管理表索引创建完成!' AS message;