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);
      • 建立主键索引
        “` MySQL
        alter table tableName add primary key (columnName); // 这里不加索引名词是因为主键只有一个

    • 删除索引:

      • 删除非主键索引:alter table tableName drop index indexName;
      • 删除主键索引:alter table tableName drop primary key;
    • 全文索引中有一个固定的句式用法:

      • “` MySQL
        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...]);
  • 创建存储过程:
    • MySQL
      create procedure pro_Name([paremeters...])
      begin
      SQL语句
      end;
    • 可以使用delimeter来声明新的结束符
    • 示例:
      MySQL
      create procedure pro1()
      begin
      select * from g;
      end$

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

      MySQL
      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');`

      MySQL
      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);`
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值