zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/snzd9958/p/10127247.html
Copyright © 2011-2022 走看看