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

mySQL自学笔记

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

索引

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

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

    1. 将空表的索引全部删除
    2. 导入数据
    3. 导入数据结束后,集中建立索引
  • 创建索引的原则:

    1. 不要过度索引
    2. 在where条件最为频繁的列上面添加索引
    3. 尽量索引散列值,过于集中的值添加索引意义不大
  • 索引类型:

    1. 普通索引:index,作用是加快查询速度
    2. 唯一索引:unique,要求行上的值是不能重复的
    3. 主键索引:primary key,主键是不能重复的
      • 主键一定是唯一的,但是唯一索引不一定是主键索引
      • 一张表上面可以有一个或多个唯一索引,但是只能有一个主键
    4. 全文索引: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');
      
      • 全文索引的停止词: 全文索引不针对非常频繁的词作索引,比如:thisisyoumy 等词汇
      • 全文索引对中文的使用情况: 在MySQL默认情况下,全文索引对中文的意义不是很大,因为中文无法像英文一样使用空格以及标点符号拆分单词,进而对单词进行索引!

存储过程

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

存储过程和函数区别

  1. 名称不一样
  2. 存储过程没有函数值,但是函数有返回值

存储过程一些基本操作

  • 查看存储过程:show procedure status;show 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);`
    

转载于:https://my.oschina.net/QinghaiZheng/blog/830514

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值