• 数据库知识归纳(索引)


    基本概念

    在数据库中,索引的含义与日常意义上的“索引”一词并无多大区别(想想小时候查字典),它是用于提高数据库表数据访问速度的数据库对象。

    • 索引可以避免全表扫描。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有数据页。
    • 对于非聚集索引,有些查询甚至可以不访问数据页。
    • 聚集索引可以避免数据插入操作集中于表的最后一个数据页。
    • 一些情况下,索引还可用于避免排序操作。

    索引的存储

    一条索引记录中包含的基本信息包括:键值(即你定义索引时指定的所有字段的值) 逻辑指针(指向数据页或者另一索引页)。

    索引的分类

    聚集索引 

    表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。在聚集索引中,叶结点也即数据结点,所有数据行的存储顺序与索引的存储顺序一致。

    在一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种。如果一张表没有聚集索引,那么它被称为“堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加的表的末尾位置。

    非聚集索引

    表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,该层紧邻数据页,其行数量与数据表行数据量一致。

    语句:

    权限分配

    grant select,insert on userdb.userinfo to'zhangsan'@'localhost'

    模糊查询

    %:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

    select * from test where text like '%1%';

    _ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

    --倒数第三个字符为 1 ,且最小长度为 5
    select * from test where text like '__%1__';

    内连接,也叫等值连接,inner join产生同时符合A和B的一组数据。

    mysql> select * from A inner join B on A.name = B.name;

    Left Join

    mysql> select * from A left join B on A.name = B.name;
    mysql> select * from A left join B on A.name=B.name where A.id is null or B.id is null;
     
  • 相关阅读:
    Java 引用传递和值传递
    jenkins 自动化部署 spring boot 项目(多图)
    Mybatis学习笔记,持续更新
    ubuntu 安装并远程连接redis
    ubuntu redis 集群安装,超简单多图细腻操作
    ubuntu16.04 的 使用笔记
    阿里云 ubuntu16.04 下 ftp 的快速应用(包罗疑难问题解决方案)
    k8s的#容器镜像
    kubectl命令出现【The connection to the server localhost:8080 was refused
    CIDR无类别域间路由
  • 原文地址:https://www.cnblogs.com/nidegui/p/13710162.html
Copyright © 2020-2023  润新知