mysql颠覆实战笔记(二)-- 用户登录(一):唯一索引的妙用
版权声明:笔记整理者亡命小卒热爱自由,崇尚分享。但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的《web级mysql颠覆实战课程 》。如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址。
一、首先我们用上节课的存储过程对两张表压100万数据(各100万)。
第一表 user_sys我们使用的是InnoDB模式,小卒自己的插入结果是:
第二张表 user_sys2我们使用的是MyISAM模式,小卒自己的插入结果是:
两个引擎的效率差异明显,所以我们再使用中根据实际情况选择。需要事务的就选择InnoDB模式,不需要事务以及表锁的采用MyISAM模式,这样极大的提高数据处理的效率。
二、select的时候MyISAM明显快于InnoDB。
select count(*) from user_sys;
select count(*) from user_sys2;
三、现在我们来建立一个索引。
在navicat中选择库jtthink,再选择设计表user_sys,.
这里介绍两个简单的概念:
普通索引--Normal:最基本的索引类型,而且它没有唯一性之类的限制。
唯一性索引--Unique:这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。
四、我们来实现第一个功能点-用户登录。
写个存储过程
1、判断用户名和密码是否匹配,如果匹配则返回该行数据,如果不匹配则返回一个错误行
2、不管成功不成功都记录一次日志。
首先,我们先来创建一个登录日志表。字段属性如下:
表名:user_log
id int 自增
log_type varchar(20) 类型,暂时放一些字符串
log_date timestamp 默认值是current_timestamp
然后我们来写这个存储过程 sp_user_login:
1 BEGIN 2 set @gid=0; 3 set @user_name=''; 4 set @_result='login sucess'; 5 SELECT id,user_name INTO @gid,@user_name FROM user_sys WHERE user_name=_user_name AND user_pwd=_user_pwd LIMIT 1; 6 7 IF @gid=0 THEN #登录不成功 8 SET @_result='login error'; 9 END IF; #不管是否匹配成功,我们都会返回一行数据。并且该行的 第一个字段 表示了 执行结果集的状态。 10 11 SELECT * FROM (SELECT @_result
as _result) a,(SELECT @gid,@user_name) b; 12 13 14 END
然后,我们来call一下 sp_user_login(‘随便的用户名’,‘随便的密码’);
然后小卒用插入正确的数据来测试
好了,这一课我们结束了。
上一篇:mysql颠覆实战笔记(一)--设计一个项目需求,灌入一万数据先
下一篇:mysql颠覆实战笔记(三)-- 用户登录(二):保存用户操作日志的方法