您的位置:首页 > 数据库 > MySQL

MysQL自学笔记8--索引、存储过程

2017-01-27 00:00 295 查看
摘要: 简单学习了一下MySQL中索引和存储引擎的概念

mySQL自学笔记

使用MySQL 5.5以及MySQL自带命令客户端

索引

索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息,其作用是可以加快查询速度,缺点是会降低增、删、改的速度

举一个例子:有一张表,上面有20列,13列上存在索引,要导入1000W行数据,该如何快速导入?

将空表的索引全部删除

导入数据

导入数据结束后,集中建立索引

创建索引的原则:

不要过度索引

在where条件最为频繁的列上面添加索引

尽量索引散列值,过于集中的值添加索引意义不大

索引类型:

普通索引:index,作用是加快查询速度

唯一索引:unique,要求行上的值是不能重复的

主键索引:primary key,主键是不能重复的

主键一定是唯一的,但是唯一索引不一定是主键索引

一张表上面可以有一个或多个唯一索引,但是只能有一个主键

全文索引:fulltext

索引的一些基本操作:

查看一张表上面的全部索引:

show index from tableName;
# 如果想要竖着显示,可以在语句最后加一个`\G`
show index from tableName \G;


建立索引:可以分为两种

建立普通、唯一、全文索引:

alter table tableName add index/unique/fulltext [indexName] (columnName);


建立主键索引

alter table tableName add primary key (columnName); // 这里不加索引名词是因为主键只有一个


删除索引:

删除非主键索引:
alter table tableName drop index indexName;


删除主键索引:
alter table tableName drop primary key;


全文索引中有一个固定的句式用法:



match (全文索引名) against ('key_word');

* ``` MySQL
select * from table1 where match (index1) against ('key_word');


全文索引的停止词:
全文索引不针对非常频繁的词作索引,比如:
this
is
you
my
等词汇

全文索引对中文的使用情况:
在MySQL默认情况下,全文索引对中文的意义不是很大,因为中文无法像英文一样使用空格以及标点符号拆分单词,进而对单词进行索引!

存储过程

存储过程的概念类似于函数,就是将一段代码封装起来,当要执行该段代码时,可以通过调用(call)该存储过程来实现。在存储过程中,可以使用
if/else
case
while
等控制结构

存储过程和函数区别

名称不一样

存储过程没有函数值,但是函数有返回值

存储过程一些基本操作

查看存储过程:
show procedure status;
show
3ff0
procedure status \G; //横着显示


删除存储过程:
drop procedure pro_Name;


调用存储过程:
call pro_Name([parameters...]);


创建存储过程:



create procedure pro_Name([paremeters...])
begin
SQL语句
end;
* 可以使用`delimeter`来声明新的结束符
* 示例:
``` MySQL
create procedure pro1()
begin
select * from g;
end$

Create procedure pro2(n int)
Begin
Select * from g where num > n;
End$
//调用时可用代码`call pro2(3);`

Create procedure pro3(n int,j char(1))
Begin
If j = ’zqh’then
Select * from g where num > n;
Else
Select * from g where num < n;
End if;
End$
//调用时可以使用代码`call pro3(13, 'zqh');`

Create procedure p3(n int,j char(1))
Begin
If j = ’h’then
Select * from g where num > n;
Else
Select * from g where num < n;
End if;
End$
//调用时可以使用代码`call pro(100);`
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL