千家信息网

MySQL索引、视图、存储过程

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,一、索引的概念数据库中的索引与书籍中的目录类似在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息书中的目录是一个词语列表,其中表明了包含各个词的页码数据库索引在数据库中,索引使数据库程序无须对
千家信息网最后更新 2024年11月11日MySQL索引、视图、存储过程

一、索引的概念
数据库中的索引与书籍中的目录类似

  • 在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息
  • 书中的目录是一个词语列表,其中表明了包含各个词的页码
    数据库索引
  • 在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据
  • 数据库中的索引是某个表中一列或者若干列值得集合,以及物理标识这些值得数据页的逻辑指针清单
    索引优点:可以快速找到数据
    缺点:占用硬盘资源
    二、索引的作用
  • 设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率
  • 特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍
  • 可以降低数据库的IO读写成本,并且索引还可以降低数据库的排序成本
  • 通过创建唯一性索引保证数据表数据的唯一性
  • 可以加快表与表之间的连接
  • 在使用分组和排序时,可大大减少分组和排序时间
    三、索引的分类
    普通索引
  • 这是最基本的索引类型,而且它没有唯一性之类的限制
    唯一性索引
  • 这种索引和前面的"普通索引"基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一
  • 唯一性索引允许为空,但是只能有一次为空
    主键
  • 主键是一种唯一性索引,但它必须指定为"PRIMARY KEY"
    全文索引
  • MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT,全文索引可以在VARCHAR或者TEXT类型的列上创建
    单列索引与多列索引
  • 索引可以是单列上创建的索引,也可以是在多列上创建的索引
    四、创建索引的原则依据
  • 表的主键、外键必须有索引
  • 数据量超过300行的表应该有索引
  • 经常与其他表进行连接的表,在连接字段(外键)上应该建立索引
  • 经常出现在Where子句中的字段,特别是大表的字段,应该建立索引
  • 索引应该建在选择性高的字段上
  • 索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引
  • 针对大的文本字段甚至超长字段,建立全文索引,fulltext
  • 唯一性太差的字段不适合建立索引
  • 更新太频繁的字段不适合创建索引
    五、创建索引的方法
  • 根据企业需求选择了合适的索引之后,可使用CREATE INDEX创建索引
  • CREATE INDEX加上各个索引关键字便可创建各个类型的索引
    实操过程



    1.创建普通索引


    删除索引

    2.创建唯一索引

    删除索引

    "alter table"创建唯一索引

    还有一种方式就是在创建表的时候,就定义索引。



    创建hobby表

    给hobby表添加数据

    将两张表关联在一起


    这就是典型的多表相连查询
    避免冗余的代码可以为表取别名

    视图概述
    是一张虚拟的表,数据不存在视图中,只是真实表的映射数据。利用条件筛选、分组、排序等产生出一个结果集,保存在内存中,并且做成持久化保存。(只保存映射)
    视图占资源少,相当于软连接,快捷方式
    真实表中数据发生变化,视图也会随之发生相应的变化。
    create view 视图名称 as 查询语句(select id,name,age) from 表名 where(条件) id=1 or id=5;

    视图的作用:可以根据不同的用户,创建不同的视图。根据权限查看不同的视图;加强安全性;方便sql操作。
    实操
    创建视图

    查看视图

    存储过程概述
    存储过程:存储过程多用于软件开发方向
    防止代码在网络传输过程中被截获,做了安全性保障
    原始状态:代码中需要嵌入sql语句:通过连接驱动(java就是jdbc)----把sql语句作为参数,传递给mysql数据库进行执行。
    存储过程是写在数据库中,并不是程序中。
    程序是通过调用存储过程名称去触发操作,(类似shell中的函数),
    优点:代码量优化,减少代码量,
    传输安全,隐藏sql语句
    网络优化。

0