索引,加快查询即数据的检索速度,但是又会增加磁盘空间的使用以及在数据的增删改操作中略微拖慢操作的速度,这就是简要的说下索引的好处和缺点,关于索引的内容,暂不对其详解,后面有时间以及自己有内容会对其进行写一篇文章的。
视图,额,工作中用的稍了一点,这里自己也仅仅对其的一点操作先做下理解,毕竟我是写给自己的,顺便带给周围人的,这就是我写文章的初衷,至少它没有变,要是我写出的内容,自己都不情愿,我觉得我没有必要进行分享出来,一篇文章总归要给自己带有一点好处,无论它是精神上的还是其它方面,我觉得我自己要赞赏它,无关其它。
好了,不扯其它了,我这里创建了一张表user表,然后看下如何对其创建索引和视图操作的。
1,创建表结构信息
create table if not exists `user`
(
id int(11) primary key auto_increment comment '用户id,自增主键',
username varchar(255) comment '用户名',
password varchar(255) comment '用户密码',
phone varchar(255) comment '用户手机号',
address varchar(255) comment '用户地址',
id_card varchar(255) comment '用户身份证'
) engine = InnoDB
charset = utf8 COMMENT '用户表';
2,首先我们可以看下表结构信息
desc user;
或者
describe user;
3,当你只知道一个表名时,想看下当时的创建表语句信息时,可以使用下面的语句进行操作,这里我只是告诉你下。
show create table user;
4,现在我们没有对表增加索引语句的操作,先来看下这张表都有哪些索引吧。
show index from user;
5,如何给user表增加普通索引呢?
alter table user add index idx_username(username);
6,如何给user表创建复合索引呢?
alter table user add index idx_name_pass(username,password);
说明:上面我们创建了索引名称为idx_name_pass的复合索引
7,上面我们介绍了以及以图文的方式展示了如何创建和查找索引的方式,接下来就是如何删除索引呢?
drop index index_name on user;//index_name索引名称,这里我们可以通过
show index from user;查找当前表都有哪些索引,然后我们找到自己要删除的索引名称删除即可。
接下来就实地操作一下咯。
drop index idx_name_pass on user;
删除索引前,我们先查看当前有哪些索引,然后找到我们要删除的索引名称执行删除索引的sql语句就可以了,然后再通过show index from user;语句进行查看是否删除成功。
以上关于索引的查看,增加,删除都讲完了,那么更新呢?
其实更新的操作就是删除了,然后重新建一个,别问为什么,一般都是这么操作的。
drop index idx_name_pass on user;
alter table user add index idx_name_pass(username,password);
既然索引创建了,那么我们先暂时来看看索引是否生效了呢?先暂时模拟几条插入数据的sql
insert into `user`(username, password, phone, address,id_card) values ("zhangsan","123456","13507660631","zheJiang","0001");
insert into `user`(username, password, phone, address,id_card) values ("lsi","123456","13507660632","zheJiang","0002");
insert into `user`(username, password, phone, address,id_card) values ("wangwu","123456","13507660633","zheJiang","0003");
insert into `user`(username, password, phone, address,id_card) values ("zhaoliu","123456","13507660634","zheJiang","0004");
insert into `user`(username, password, phone, address,id_card) values ("sunqi","123456","13507660635","zheJiang","0005");
insert into `user`(username, password, phone, address,id_card) values ("dengchao","123456","13507660636","zheJiang","0006");
insert into `user`(username, password, phone, address,id_card) values ("sunli","123456","13507660637","zheJiang","0007");
insert into `user`(username, password, phone, address,id_card) values ("huangxiaoming","123456","13507660638","zheJiang","0008");
insert into `user`(username, password, phone, address,id_card) values ("zhaowei","123456","13507660639","zheJiang","0009");
insert into `user`(username, password, phone, address,id_card) values ("zhangsan","123456","13907660631","zheJiang","0010");
表数据有了,接下来我们执行下面的sql看下是否索引生效。
explain select * from user where username ='zhangsan' and password='123456';
那么,这里我们再执行一下下面的sql语句看下索引是否失效。
explain select * from user where password='123456' and username='zhangsan';
通过执行计划发现没有失效,索引判断索引是否失效或者生效都要看下explain中的内容。
上面演示了一下索引失效的内容,后面再仔细介绍一下吧,这里暂时就到这里,然后我们看下如何去创建视图。
1,创建视图的语句
create view viewSelect as select * from user where password='123456';
2,查看创建视图viewSelect的命令
show create view viewSelect;
3,执行我们已经创建好的视图
select * from viewSelect;
其实视图里面封装了我们的执行sql,这样我们操作视图就相当于操作sql了,方便了,至少目前没有在实际的工作中用到过视图,这里先暂时有个了解。
4,如何删除视图呢?
1,首先我们先看下都有哪些视图,然后在进行删除我们想要删除的视图
show table status where comment='view';
drop view if exists viewSelect;//这里额viewSelect是视图名称。
这里自己偷偷创建了视图viewSelect2。
这里执行删除视图的语句
drop view if exists viewSelect;
show table status where comment='view';
好了,到这里就结束了索引和视图的分享过程,整个流程也是自己的一种总结和分享,就不过多介绍了,后面有时间就再说其他的内容好了。正如我的公众号标题一样,我喜欢分享,你喜欢阅读,