• MySQL自定义函数、视图、索引


    MySQL视图

    创建视图:(虚拟表)
    create or replace view 名称 as 
    select ...(查询语句)


    MySQL自定义函数
    只有一个返回值,不能返回结果集,可以在SQL语句中调用自定义函数function
    delimiter // 
    drop function if exists getname;
    create function getname(studentid int)
    -- 定义返回类型
    returns varchar(20)
    begin 
    -- 声明变量
        declare studentname varchar(20);
        select sname into studentname from student where sid=studentid;
    -- 设置返回值
        return studentname;
    end;//

    delimiter ;
    -- 调用自定义函数,并对列命名
    select getname(1) as name;

    索引


    优点:
    1、所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段设置索引
    2、大大加快数据的查询速度

    缺点:
    1、创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加
    2、索引也需要占空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值
    3、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

    使用原则:
    通过上面说的优点和缺点,我们应该可以知道,并不是每个字段度设置索引就好,也不是索引越多越好,而是需要自己合理的使用。
    1、对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引,
    2、数据量小的表最好不要使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。
    3、在一同值少的列上(字段上)不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可是建立索引

    Mysql索引主要有两种结构:B+Tree索引和Hash索引
    Hash
    MySQL中,只有Memory(Memory表只存在内存中,断电会消失,适用于临时表)存储引擎显示支持Hash索引,是Memory表的默认索引类型
    hsah索引把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快。当时因为是hash结构,每个键只对应一个值,而且是散列的方式分布。所以它并不支持范围查找和排序等功能
    B+Tree
    B+tree是mysql使用最频繁的一个索引数据结构,是Inodb和Myisam存储引擎模式的索引类型
    相对Hash索引,B+树在查找单条记录的速度比不上Hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎。毕竟不可能只对数据库进行单条记录的操作。

    Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引
    1.普通索引index :加速查找
    2.唯一索引
        主键索引:primary key :加速查找+约束(不为空且唯一)
        唯一索引:unique:加速查找+约束 (唯一)
    3.联合索引
        -primary key(id,name):联合主键索引
        -unique(id,name):联合唯一索引
        -index(id,name):联合普通索引
    4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
    5.空间索引spatial

  • 相关阅读:
    LeetCode算法题-Binary Search(Java实现)
    LeetCode算法题-Kth Largest Element in a Stream(Java实现)
    LeetCode算法题-Search in a Binary Search Tree(Java实现)
    LeetCode算法题-Degree of an Array(Java实现)
    LeetCode算法题-Count Binary Substrings(Java实现)
    LeetCode算法题-Binary Number with Alternating Bits(Java实现)
    之前见汤姆大叔 写过一系列的 js 深入理解 呢 很是感觉经典
    xsd 和 wsdl
    发现 一个业务管理系统 解决了 orm 和 前端框架 剩下的 是 业务逻辑 了 。 哈
    uwp 嗯 我最近 准备开发一个 应用 。 嗯 走起
  • 原文地址:https://www.cnblogs.com/snzd9958/p/10127247.html
Copyright © 2020-2023  润新知