【mysql-索引+存储过程+函数+触发器-更新。。。】

BaseOn ===》MySQL5.6

一:索引

1:创建索引:

  create index nameIndex on seckill(name) ;

2:查看索引:

show index from seckill \G;

  

3:删除索引:删除表中对应的列属性的时候,该属性对应的索引也会删除。如果组成的索引列中有字段被删除,该索引也会被删除。

 drop index nameIndex on seckill;

二:存储过程

存储过程案例:

-- 秒杀执行存储过程
DELETE $$ -- console的结束符号由;转换成 $$
-- in输入参数;out:输出参数
-- ROW_COUNT():返回上条dml影响的条数: 小于0:sql语句错误/未执行修改sql操作
-- 存储过程执行秒杀过程
delimiter $$
CREATE PROCEDURE kill.execute_seckill
(in v_seckill_id BIGINT, in v_phone BIGINT, in v_kill_time timestamp, out r_result int)
BEGIN
DECLARE insert_count INT;
SET insert_count = 0;
START TRANSACTION;
INSERT IGNORE into success_killed (seckill_id, user_phone,create_time)
values (v_seckill_id,v_phone,v_kill_time);
select ROW_COUNT() into insert_count;
if(insert_count = 0) THEN
ROLLBACK;
SET r_result = -1;
ELSEIF (insert_count < 0) THEN
ROLLBACK;
set r_result = -2;
ELSE
update seckill set number = number - 1
where seckill_id = v_seckill_id
and end_time > v_kill_time
and start_time < v_kill_time
and number > 0;
SELECT ROW_COUNT() into insert_count;
IF (insert_count = 0) THEN
ROLLBACK;
set r_result = 0;
ELSEIF (insert_count < 0) THEN
ROLLBACK;
set r_result = -2;
ELSE
COMMIT;
SET r_result = 1;
END IF;
END IF;
END;
$$
delimiter ; -- console的结束符号由$$转换成;
-- 存储过程定义结束
-- 删除存储过程
drop procedure execute_seckill


set @r_result = -3; -- 在console中定义变量需要使用@
-- console 中执行存储过程
call execute_seckill(1001, 15665662547,NOW(),@r_result);

-- 获取结果mysql语法
select @r_result;
show CREATE PROCEDURE execute_seckill -- 查询存储过程

-- 存储过程
-- 1: 存储过程的优化 : 事务行级锁持有时间
-- 2;不要过分依赖存储过程
-- 3;简单的逻辑可以应用存储过程
-- 4:QPS: 同一个秒杀的达到6k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

posted on 2017-05-25 15:59  nodeyang 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/yangjian-java/p/6904298.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值