mysql索引和视图

索引的作用

索引相当于一本字典目录,能够提高数据库的查询效率,表中每一个字段都可添加索引。主键会自动添加索引,在查询时,如果能通过主键查询的尽量使用主键查询,效率高。

MySQL数据库表中的检索方式有两种:

  • 全表扫描(效率低)
    例如:select * from emp where ename = ‘KING’;如果ename字段没有添加索引的话,就会发生全表扫描。

  • 通过索引检索

什么情况下适合添加索引

  • 该字段数据量庞大;
  • 该字段很少的DML操作(由于索引也需要维护,DML操作多的话,也影响检索效率);
  • 该字段经常出现在where条件中;

注意:实际开发中会根据项目需求等综合因素来做调整,添加索引并不能保证一定能够提升检索效率,索引添加不当也有可能会导致效率降低。

使用索引

创建索引

语法:

create index 索引名 on 表名(列名);

示例:

create index dept_dname_index on dept(dname);

查看索引

语法:

show index from 表名;

示例:

show index from dept;

删除索引

语法:

drop index 索引名 on 表名;

示例:

drop index dept_dname_index on dept;

视图

视图其实就是一个查询结果,相当于是一张虚拟表,也可以将视图看做是一个SQL语句,视图的作用可以隐藏表的实现细节。

创建视图

语法:

create view 视图名称 as 查询语句;

示例,将emp表中的empno、ename、sal作为视图展示:

create view e_info as select empno,ename,sal from emp;

使用视图:

select * from e_info;

修改视图

语法:

alter view 视图名称 as 查询语句

示例:

alter view e_info as select ename,job from emp;

删除视图

语法:

drop view if exists 视图名称;

示例:

drop view if exists e_info;

数据库的导出和导入

导出命令,在命令提示符下:

mysqldump -u root -p monkey1024 > d:/init.sql

上面的monkey1024是要导出的数据库的名称。

导入sql脚本,在命令提示符(管理员权限)下登录成功后,输入下面内容:

source d:/init.sql

即source后写上sql文件的目录地址。