首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL树引擎索引(B- InnoDB )

问MySQL树引擎索引(B- InnoDB )
EN

Stack Overflow用户
提问于 2016-08-26 17:40:06
回答 1查看 79关注 0票数 0

我有以下user registration table

代码语言:javascript
复制
      ID INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      User_name VARCHAR(35) NOT NULL,
      Full_name VARCHAR(55) NOT NULL,
      User_vars VARCHAR(255) NOT NULL,
      BirthDay DATE NOT NULL,
      password CHAR(70) NOT NULL,  
      Security_hint VARCHAR(27) NOT NULL,
      Email VARCHAR(225) NOT NULL,
      userType ENUM ('a','b','c','d') NOT NULL DEFAULT 'a',
      Signup_Date TIMESTAMP NOT NULL  DEFAULT CURRENT_TIMESTAMP,
      activation   TINYINT(1) UNSIGNED NOT NULL,
      Ip BINARY(16) NOT NULL,
      PRIMARY KEY (ID),
      UNIQUE KEY User_name (User_name,Email)

我真的很困惑是否应该索引字段BirthDay, Signup_Date, Full_name, User_vars and userType,因为这些信息必须显示在用户访问的任何页面中。

User_vars是一个用户可能每天(甚至每周)更新的字段;我认为索引这个字段可能不是一个好主意,因为索引减慢了写操作;如果错误,请纠正我。我在其他表中有许多像这样的其他字段(用户每天更新的字段,他们的更新必须显示在他们访问的任何页面上),不知道他们是否也必须被索引

注意:我知道我可以查询它们一次,然后缓存它们,但是我担心对表的第一次查询返回结果集会很慢。

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 17:56:53

为了提高性能,将VARCHAR更改为TINYTEXT,这允许行具有固定的大小,从而加速表扫描。根据该表,查询可能是针对User_name和电子邮件的。将其更改为CHAR并对其进行索引。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39163218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档