请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于mysql表的索引数量过多问题

老师我这样的索引会不会太过丧心病狂影响性能

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
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE sys_user(
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT "主键",
    username VARCHAR(50) NOT NULL COMMENT "用户名",
    `passwordVARCHAR(250) NOT NULL COMMENT "密码(AES加密)",
    mobile INT(20) NULL COMMENT "手机号码",
    email VARCHAR(100) NULL COMMENT "电子邮箱",
    `nameVARCHAR(50) NULL COMMENT "姓名",
    avatar VARCHAR(2000) NULL COMMENT "用户头像",
    enabled TINYINT UNSIGNED NOT NULL COMMENT "是否可用: 1可用,0禁用",
    account_non_expired TINYINT UNSIGNED NOT NULL COMMENT "帐户没过期: 1没过期,0过期",
    account_non_locked TINYINT UNSIGNED NOT NULL COMMENT "帐户没锁定: 1没锁定,0锁定",
    credentials_non_expired TINYINT UNSIGNED NOT NULL COMMENT "密码没过期: 1没过期,0过期",
    using_mfa TINYINT UNSIGNED NOT NULL COMMENT "是否启用多因子认证: 1是,0否",
    mfa_key VARCHAR(250) NULL COMMENT "多因子验证码",
    create_time TIMESTAMP NOT NULL DEFAULT NOW() COMMENT "添加时间",
    last_update_time TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE NOW() COMMENT "最后修改时间",
    UNIQUE unq_username(username),
    UNIQUE unq_mobile(mobile),
    UNIQUE unq_email(email),
    INDEX idx_username(username),
    INDEX idx_mobile(mobile),
    INDEX idx_email(email),
    INDEX idx_enabled(enabled),
    INDEX idx_account_non_expired(account_non_expired),
    INDEX idx_account_non_locked(account_non_locked)
) COMMENT = "系统用户表";


正在回答 回答被采纳积分+3

插入代码

1回答

神思者 2021-04-23 20:37:53

你要是业务简单的话,同一个字段UNIQUE和INDEX索引保留唯一性索引就够了,但是查询条件复杂的话,保留两种索引,将来可以修改INDEX索引的类型从BTREE变成HASH

2 回复 有任何疑惑可以回复我~
  • 提问者 LayLowMay #1
    谢谢老师,那我类似enabled字段那种,业务复杂有必要用INDEX索引,不复杂可以不用索引是吧?
    业务复杂的话这么多索引也是没问题对嘛?
    回复 有任何疑惑可以回复我~ 2021-04-23 20:49:46
  • 神思者 回复 提问者 LayLowMay #2
    嗯,是的
    回复 有任何疑惑可以回复我~ 2021-04-23 21:44:39
  • 提问者 LayLowMay 回复 神思者 #3
    老师, 我通过学习发现InnoDB是自适应哈希索引, 自己也没法把普通索引INDEX改为HASH啊
    回复 有任何疑惑可以回复我~ 2021-04-26 12:43:08
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号