目录
简介:数据库表score_flow(积分流水表 增减活跃度的来源)、user_score(用户积分表总表)
设计,用于:1)查top100
2)查用户的排名
2、浅谈mysql数据库表设计过程中几个关键要点
1、表设计过程中应该注意的点即数据类型
1)更小的通常更好
控制字节长度
2)使用合适的数据类型
如tinyint只占8个位,char(1024)与varchar(1024)的对比,
char用于类似定长数据存储比varchar节省空间(varchar要有长度等信息),如:uuid(32),可以用char(32).
3)尽量避免NULL建议使用 NOT NULL DEFAULT ' '
NOTNULL DEFAULT 0
NULL的列会让索引统计和值比较都更复杂。
可为NULL的列会占据更多的磁盘空间,在Mysql中也需要更多复杂的处理程序
2、索引设计过程中应该注意的点(优化首先要考虑的)
1)选择唯一性索引
可以通过程序的方法实现(查全表)性能会有损耗(某一时刻 同时都插入相同的字段值)可能会导致不一致的情况的出现
DB的唯一索引强制行的东西
唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录,保证物理上面唯一
2)为经常需要排序、分组和联合操作的字段建立索引
经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作会浪费很多时间
3) 常作为查询条件的字段建立索引
如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度
4) 数据少的地方不必建立索引
全表的1/3都用状态2 建立索引也不能提高查询的效率
user_id的值只有一个 建立索引就会提高查询的效率
3、sql优化,explain查看执行计划
type 外键关联
(注意:扫描行数会影响CPU运行,占用大量内存)
1) 能够用BETWEEN的就不要用IN (树形结构 in扫的行数更多)
2) 能够用DISTINCT的就不用GROUP BY
3) 避免数据类型强转()
4) 学会采用explain查看执行计划
续:org.mybatis.generator配置
引入:
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<scope>test</scope>
<version>1.3.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
只需写这三个然后运行generator就可自动生成mapper和domain