• 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

  • 相关阅读:
    IOS Charles(代理服务器软件,可以用来拦截网络请求)
    Javascript中addEventListener和attachEvent的区别
    MVC中实现Area几种方法
    Entity Framework Code First 中使用 Fluent API 笔记。
    自定义JsonResult解决 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
    序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
    An entity object cannot be referenced by multiple instances of IEntityChangeTracker 的解决方案
    Code First :使用Entity. Framework编程(8) ----转发 收藏
    Code First :使用Entity. Framework编程(6) ----转发 收藏
    Code First :使用Entity. Framework编程(5) ----转发 收藏
  • 原文地址:https://www.cnblogs.com/snzd9958/p/10127247.html
Copyright © 2020-2023  润新知