赞
踩
分页优化
建议使用合理的分页方式以提高分页效率,大页情况下不使用跳跃式分页假如有类似下面分页语句:SELECT *FROM table1 ORDER BY ftime DESC LIMIT 10000,10;这种分页方式会导致大量的io,因为MySQL使用的是提前读取策略。推荐分页方式:SELECT *FROM table1 WHERE ftime < last_time ORDER BY ftime DESC LIMIT 10即传入上一次分页的界值
SELECT * FROM table as t1 inner JOIN (SELECT id FROM table ORDER BY time LIMIT 10000,10) as t2 ON t1.id=t2.id
隐式类型使用注意事项
所有其他情况下,两个参数都会被转换为浮点数再进行比较。
例:A列为int类型时,A=’123’隐式转换后可以使用索引;A为char类型时,A=123隐式转换后无法使用索引
业务名称或者功能模块: 某个应用的用户表【越详细越好】
实例库名: asgard
建表语句:
CREATE TABLE user
(
id
int(11) NOT NULL AUTO_INCREMENT,
login_id
varchar(200) DEFAULT NULL 登录id,
password
varchar(100) DEFAULT NULL COMMENT ‘密码’,
user_name
varchar(45) DEFAULT NULL COMMENT ‘姓名’,
user_type
int(1) NOT NULL COMMENT ‘应用类型:1.内网应用,走域帐号;2.外网应用,只做映射关系’,
user_code
varchar(45) NULL COMMENT ‘asgard的管理员:asgard_admin 内部应用 fraudmetrix 外部应用’,
status
int(1) DEFAULT ‘0’ COMMENT ‘是否可用,0:停用,1:可用’,
created_by
varchar(100) DEFAULT NULL COMMENT ‘新增者’,
updated_by
varchar(100) DEFAULT NULL COMMENT ‘修改者’,
gmt_create
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
gmt_modify
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘修改时间’,
PRIMARY KEY (id
),
KEY idx_loginId
(login_id
(191)) ,
KEY idx_userType
(user_type
) ,
KEY idx_userCode
(user_code
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=’用户表’
注:时间字段放于最后
查询条件(包括DML中的条件)及每个条件占比数据量:
where login_id=1 100%不同值 算法:count(distinct login_id) / count(1)
where user_name=1 and status=1 order by id desc limit 5 80%不同值,算法:count(distinct user_name,status) / count(1)
原则上大于20%以上就要创建下索引
表的预估数据量条数: 10K条左右
表的预估并发量QPS: 50
分库分表要求: 无【原则上1000万以上需要分库分表,这个待中间件上线上正式实施】
其他说明: 无
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。