如何合理的添加索引

我就想加个索引,怎么就这么难?

领导让我SQL优化,我直接把服务干挂了…

前言

MySQL大表加字段或者加索引,是有一定风险的。

大公司一般有DBA,会帮助开发解决这个痛点,可是DBA是怎么做的呢?

小公司没有DBA,作为开发我们的责任就更大了。那么我们怎么才能安全的加个索引呢?

今天,我们通过模拟案例以及原理分析,去弄清楚MySQL中DDL的风险,以及如何避免事故发生。

准备

软件以及项目

安装本地版本MySQL。

一个简单的增删改查项目。

使用JMeter进行并发请求测试。

创建表

如果存在user表则删除

DROP TABLE IF EXISTS user;

创建user表

CREATE TABLE user (
id bigint NOT NULL AUTO_INCREMENT COMMENT ‘自增主键’,
name varchar(10) DEFAULT NULL COMMENT ‘姓名’,
age int(2) DEFAULT NULL COMMENT ‘年龄’,
address varchar(30) DEFAULT NULL COMMENT ‘地址’,
description varchar(100) DEFAULT NULL COMMENT ‘描述’,
test_id bigint DEFAULT NULL COMMENT ‘测试 id’,
create_time timestamp NULL DEFAULT NULL COMMENT ‘创建时间’,
modify_time timestamp NULL DEFAULT NULL COMMENT ‘修改时间’,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=‘mysql ddl测试表’;

创建存储过程

如果存在test存储过程则删除

DROP PROCEDURE IF EXISTS test;

创建无参存储过程,名称为test

CREATE PROCEDURE test()

BEGIN
# 声明变量
DECLARE i INT;
# 变量赋值
SET i = 0;
# 结束循环的条件: 当i等于100万时跳出while循环
WHILE i < 1000000 DO
# 往t_test表添加数据
INSERT INTO test.user (name, age, address,
description, test_id, create_time, modify_time)
VALUES (‘iisheng’, 26, ‘北京’, ‘如逆水行舟’, LAST_INSERT_ID() + 1,
‘2020-05-17 16:01:44’, ‘2020-05

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值