【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
【mysql-索引+存储过程+函数+触发器-更新。。。】的更多相关文章
- MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称
MySQL 查询 存储过程 视图 触发器 函数 索引 建表语句 数据库版本 当前登录用户 当前数据库名称 INFORMATION_SCHEMA.TABLES INFORMATION_SCHEMA. ...
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...
- MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法
在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...
- mysql 存储过程 函数 触发器
mysql存储过程与函数 存储过程下载 demo mysql> delimiter // -- 这里//为修改默认分隔符: mysql> CREATE PROCEDURE simplep ...
- MySQL笔记 存储过程 游标 触发器
第二十三章 使用存储过程 MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就 ...
- MySql的存储过程和触发器
Mysql的存储过程是类似于其它编程语言中的函数的功能,存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数. 创建存储过程(procedure)时,因为其内部有以; ...
- mysql使用存储过程&函数实现批量插入
写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧...正好也好加深下对procedure和function的熟练操作吧...废话不多说,我就直接上表结构啦哈,如下: cre ...
- MySQL创建存储过程/函数需要的权限
alter routine---修改与删除存储过程/函数 create routine--创建存储过程/函数 execute--调用存储过程/函数 下面有一篇介绍MySQL所有权限的博文 http:/ ...
- oracle 之索引,同义词 ,关键词,视图 ,存储过程,函数,触发器
--创建索引 关键词 index create[unique] index index_name on table_name(column_name [,column_name…]) [tablesp ...
随机推荐
- html编辑器的调用
<html><head> <metahttp-equiv="Content-type"content="text/html; cha ...
- java反射(二)
java的很多框架都是基于反射的.
- 英语发音规则---L字母
英语发音规则---L字母 一.总结 一句话总结:[l]音在词首和词尾的发音不同,/l/+其它音节./l/+元音./l/+/j/称它为清晰/l/,发清晰/l/音时,在下一个音即将出出时舌头离开上齿龈,迅 ...
- idea集成spring+spring MVC+mybatis问题
1.如果mybatis的xml文件放在java文件夹下(idea不会编译src的java目录的xml文件),需要在pom.xml中加入以下代码: <build> <resources ...
- php常用函数htmlspecialchars、strip_tags、addslashes解析
本文章向大家介绍php开发中经常使用到的字符串函数htmlspecialchars.strip_tags.addslashes的使用方法及他们之间的区别,需要的朋友可以参考一下. 1.函数strip_ ...
- Linux-NoSQL之Redis(二)
一.Redis配置文件详解 1.通用配置 daemonize no # 默认情况下,redis并不是以daemon形式来运行的.通过daemonize配置项可以控制redis的运行形式 pidfil ...
- Mex混合编程专题一:Mex环境搭建
使用Matlab时间长了,难免会碰到使用mex文件的经历,不管是别人的还是自己的,就比如MatConvNet(http://www.vlfeat.org/matconvnet/)使用了混合编程的技术实 ...
- BZOJ5362: [Lydsy1805月赛]quailty 算法
BZOJ5362: [Lydsy1805月赛]quailty 算法 https://lydsy.com/JudgeOnline/problem.php?id=5362 分析: 题意即求一个最小基环树森 ...
- BZOJ2286 [Sdoi2011]消耗战 和 BZOJ3611 [Heoi2014]大工程
2286: [Sdoi2011]消耗战 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6371 Solved: 2496[Submit][Statu ...
- bzoj 3232: 圈地游戏 01分数规划
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3232 题解: 首先我们看到这道题让我们最优化一个分式. 所以我们应该自然而然地想到01分 ...